From f3b421eb2c6197d483b31f5cd1a4d71a8ff51a6d Mon Sep 17 00:00:00 2001 From: tian jiax <446100073@qq.com> Date: Tue, 6 Feb 2024 13:16:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=AD=A3=E5=B0=84=E5=90=8E?= =?UTF-8?q?=E5=90=91=E5=8A=A0=E5=85=A5dem=E8=A3=81=E5=89=AA=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=EF=BC=8C=E9=98=B2=E6=AD=A2dem=E8=BF=87=E5=A4=A7?= =?UTF-8?q?=E5=BD=B1=E5=93=8D=E6=95=88=E7=8E=87=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=A4=8D=E8=A2=AB=E7=89=A9=E5=80=99=E7=89=B9=E5=BE=81=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Ortho-L-SAR/OrthoMain.py | 15 +- backScattering-L-SAR/BackScattering-L-SAR.xml | 6 +- backScattering-L-SAR/BackScatteringMain.py | 19 +- .../BackScattering2023-11-21-18-32-28.log | 19 - .../BackScattering2023-11-21-18-42-11.log | 30 - .../BackScattering2023-11-21-18-44-18.log | 30 - .../BackScattering2023-11-21-19-00-41.log | 5 - .../BackScattering2023-11-21-19-03-11.log | 17 - .../BackScattering2023-11-21-19-27-00.log | 7 - .../BackScattering2023-11-21-19-40-46.log | 7 - .../BackScattering2023-11-22-11-12-38.log | 11 - .../BackScattering2023-11-22-16-29-13.log | 11 - landcover-L-SAR/LandCover-L-SAR.xml | 4 +- .../run_log/LandCover2024-01-12-12-37-08.log | 21 - .../run_log/LandCover2024-01-12-13-00-19.log | 44 - .../run_log/LandCover2024-01-12-13-15-17.log | 30 - .../run_log/LandCover2024-01-12-13-15-18.log | 15 - .../run_log/LandCover2024-01-12-13-15-19.log | 30 - .../run_log/LandCover2024-01-12-13-15-21.log | 30 - .../run_log/LandCover2024-01-12-13-15-22.log | 15 - .../run_log/LandCover2024-01-12-13-15-23.log | 14 - .../run_log/LandCover2024-01-12-13-15-25.log | 14 - .../run_log/LandCover2024-01-12-13-15-26.log | 23 - .../run_log/LandCover2024-01-12-13-15-27.log | 9 - .../run_log/LandCover2024-01-12-13-15-28.log | 8 - .../run_log/LandCover2024-01-12-13-15-29.log | 7 - .../run_log/LandCover2024-01-12-13-18-30.log | 3 - .../tool/LAI/LAIProcess.cp38-win_amd64.pyd | Bin 101888 -> 0 bytes landcover-L-SAR/tool/LAI/LAIProcess.pyx | 166 - landcover-L-SAR/tool/LAI/build/LAIProcess.c | 11637 ---------------- .../build/LAIProcess.cp38-win_amd64.exp | Bin 763 -> 0 bytes .../build/LAIProcess.cp38-win_amd64.lib | Bin 2052 -> 0 bytes .../Release/build/LAIProcess.obj | Bin 600245 -> 0 bytes landcover-L-SAR/tool/LAI/setup.py | 45 - .../algtools/CoordinateTransformation.py | 117 - .../tool/algorithm/algtools/DEMJoint.py | 156 - .../algorithm/algtools/MetaDataHandler.py | 154 - .../tool/algorithm/algtools/PreProcess.py | 527 - .../tool/algorithm/algtools/ROIAlg.py | 237 - .../tool/algorithm/algtools/RieveFilter.py | 57 - .../algorithm/algtools/ScatteringAuxData.py | 122 - .../calculateLocalIncident.py | 414 - .../filter/build/lee_Filter/lee_Filter_c.c | 7654 ---------- .../lee_Filter_c.cp38-win_amd64.exp | Bin 800 -> 0 bytes .../lee_Filter_c.cp38-win_amd64.lib | Bin 2088 -> 0 bytes .../Release/build/lee_Filter/lee_Filter_c.obj | Bin 390839 -> 0 bytes .../tool/algorithm/algtools/filter/isce.log | 7 - .../algorithm/algtools/filter/lee_Filter.py | 302 - .../filter/lee_Filter/lee_Filter_c.pyx | 124 - .../filter/lee_Filter_c.cp38-win_amd64.pyd | Bin 56832 -> 0 bytes .../tool/algorithm/algtools/filter/setup.py | 45 - .../tool/algorithm/algtools/logHandler.py | 106 - .../algtools/oh2004/build/oh2004/oh2004.c | 9665 ------------- .../build/oh2004/oh2004.cp38-win_amd64.exp | Bin 743 -> 0 bytes .../build/oh2004/oh2004.cp38-win_amd64.lib | Bin 1980 -> 0 bytes .../Release/build/oh2004/oh2004.obj | Bin 538952 -> 0 bytes .../algtools/oh2004/oh2004.cp38-win_amd64.pyd | Bin 85504 -> 0 bytes .../oh2004/oh2004/Oh2004_inversion.py | 90 - .../algtools/oh2004/oh2004/oh2004.pyx | 128 - .../tool/algorithm/algtools/oh2004/setup.py | 45 - .../tool/algorithm/algtools/oh2004/test.py | 26 - .../tool/algorithm/algtools/proj.db | Bin 9129984 -> 0 bytes .../tool/algorithm/algtools/sieve_filter.py | 92 - .../tool/algorithm/block/blockprocess.py | 449 - .../tool/algorithm/image/ImageHandle.py | 752 - .../tool/algorithm/ml/MonteCarloSampling.py | 185 - .../tool/algorithm/ml/machineLearning.py | 422 - .../algorithm/polsarpro/AHVToPolsarpro.py | 491 - .../algorithm/polsarpro/AHVToPolsarproS2.py | 228 - .../polsarpro/DualPolarToPolsarproC2.py | 196 - .../GLCM_当前没用到灰度共生矩阵特征.py | 97 - .../tool/algorithm/polsarpro/bin2tif.py | 85 - .../tool/algorithm/polsarpro/createfeature.py | 190 - .../polsarpro/polarizationDecomposition.py | 2283 --- .../pspCloudePottierDecomposition.py | 132 - .../polsarpro/pspFreemanDecomposition.py | 109 - .../polsarpro/pspHAAlphaDecomposition.py | 435 - .../polsarpro/pspLeeRefinedFilterC2.py | 170 - .../polsarpro/pspLeeRefinedFilterT3.py | 104 - .../polsarpro/pspSurfaceInversion.py | 393 - .../polsarpro/pspTouziDecomposition.py | 146 - .../polsarpro/pspYamaguchiDecomposition.py | 104 - .../transforml1a/SAR_GEO.cp38-win_amd64.pyd | Bin 72704 -> 0 bytes .../transforml1a/SAR_geo/SAR_GEO.pyx | 194 - .../transforml1a/build/SAR_geo/SAR_GEO.c | 9744 ------------- .../build/SAR_geo/SAR_GEO.cp38-win_amd64.exp | Bin 769 -> 0 bytes .../build/SAR_geo/SAR_GEO.cp38-win_amd64.lib | Bin 2000 -> 0 bytes .../Release/build/SAR_geo/SAR_GEO.obj | Bin 484497 -> 0 bytes .../tool/algorithm/transforml1a/setup.py | 45 - .../algorithm/transforml1a/transHandle.py | 1096 -- .../tool/algorithm/xml/AlgXmlHandle.py | 730 - .../tool/algorithm/xml/AnalysisXml.py | 135 - .../tool/algorithm/xml/CreatMetafile.py | 319 - .../tool/algorithm/xml/CreateMetaDict.py | 258 - landcover-L-SAR/tool/config/ConfigeHandle.py | 48 - landcover-L-SAR/tool/csv/csvHandle.py | 265 - landcover-L-SAR/tool/file/fileHandle.py | 88 - landcover-L-SAR/tool/logs/logHandler.py | 90 - landcover-L-SAR/tool/newimage.csv | 47 - landcover-L-SAR/tool/testxmlreading.py | 99 - soilMoisture-L-SAR/SoilMoisture.xml | 12 +- soilMoisture-L-SAR/SoilMoistureALg.py | 4 +- soilMoisture-L-SAR/SoilMoistureMain.py | 54 +- soilMoisture-L-SAR/config.ini | 2 +- .../SoilMoisture2023-11-22-17-27-51.log | 14 - .../SoilMoisture2023-11-22-17-28-49.log | 46 - .../SoilMoisture2023-11-22-17-35-42.log | 255 - .../SoilMoisture2023-11-22-17-53-44.log | 0 .../SoilMoisture2023-11-22-17-53-45.log | 0 .../SoilMoisture2023-11-22-17-53-46.log | 0 soilSalinity-L-SAR/SoilSalinityMain.py | 10 +- soilSalinity-L-SAR/config.ini | 3 +- .../SurfaceRoughnessMain.py | 26 +- surfaceRoughness-L-SAR/config.ini | 3 +- .../surface_inversion_dubois.exe | Bin 680157 -> 0 bytes .../surface_inversion_histo.exe | Bin 674334 -> 0 bytes .../surface_inversion_oh.exe | Bin 678271 -> 0 bytes .../surface_inversion_oh2004.exe | Bin 681949 -> 661504 bytes .../surface_inversion_oh2004_v6.0.exe | Bin 888296 -> 0 bytes tool/algorithm/algtools/PreProcess.py | 25 + tool/algorithm/block/blockprocess.py | 15 +- tool/algorithm/ml/machineLearning.py | 4 +- tool/algorithm/polsarpro/AHVToPolsarpro.py | 61 + tool/algorithm/xml/AnalysisXml.py | 68 +- .../VegetationPhenologyMain.py | 145 +- vegetationPhenology-L-SAR/config.ini | 2 + 127 files changed, 289 insertions(+), 52950 deletions(-) create mode 100644 .gitignore delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-18-32-28.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-18-42-11.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-18-44-18.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-19-00-41.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-19-03-11.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-19-27-00.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-21-19-40-46.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-22-11-12-38.log delete mode 100644 backScattering-L-SAR/run_log/BackScattering2023-11-22-16-29-13.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-12-37-08.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-00-19.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-17.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-18.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-19.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-21.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-22.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-23.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-25.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-26.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-27.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-28.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-15-29.log delete mode 100644 landcover-L-SAR/run_log/LandCover2024-01-12-13-18-30.log delete mode 100644 landcover-L-SAR/tool/LAI/LAIProcess.cp38-win_amd64.pyd delete mode 100644 landcover-L-SAR/tool/LAI/LAIProcess.pyx delete mode 100644 landcover-L-SAR/tool/LAI/build/LAIProcess.c delete mode 100644 landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.cp38-win_amd64.exp delete mode 100644 landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.cp38-win_amd64.lib delete mode 100644 landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.obj delete mode 100644 landcover-L-SAR/tool/LAI/setup.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/CoordinateTransformation.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/DEMJoint.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/MetaDataHandler.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/PreProcess.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/ROIAlg.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/RieveFilter.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/ScatteringAuxData.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/calculateLocalIncident/calculateLocalIncident.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/build/lee_Filter/lee_Filter_c.c delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.cp38-win_amd64.exp delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.cp38-win_amd64.lib delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.obj delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/isce.log delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter/lee_Filter_c.pyx delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter_c.cp38-win_amd64.pyd delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/filter/setup.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/logHandler.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/build/oh2004/oh2004.c delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.cp38-win_amd64.exp delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.cp38-win_amd64.lib delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.obj delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/oh2004.cp38-win_amd64.pyd delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/oh2004/Oh2004_inversion.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/oh2004/oh2004.pyx delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/setup.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/oh2004/test.py delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/proj.db delete mode 100644 landcover-L-SAR/tool/algorithm/algtools/sieve_filter.py delete mode 100644 landcover-L-SAR/tool/algorithm/block/blockprocess.py delete mode 100644 landcover-L-SAR/tool/algorithm/image/ImageHandle.py delete mode 100644 landcover-L-SAR/tool/algorithm/ml/MonteCarloSampling.py delete mode 100644 landcover-L-SAR/tool/algorithm/ml/machineLearning.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/AHVToPolsarpro.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/AHVToPolsarproS2.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/DualPolarToPolsarproC2.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/GLCM_当前没用到灰度共生矩阵特征.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/bin2tif.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/createfeature.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/polarizationDecomposition.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspCloudePottierDecomposition.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspFreemanDecomposition.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspHAAlphaDecomposition.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspLeeRefinedFilterC2.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspLeeRefinedFilterT3.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspSurfaceInversion.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspTouziDecomposition.py delete mode 100644 landcover-L-SAR/tool/algorithm/polsarpro/pspYamaguchiDecomposition.py delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/SAR_GEO.cp38-win_amd64.pyd delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/SAR_geo/SAR_GEO.pyx delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/build/SAR_geo/SAR_GEO.c delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/build/temp.win-amd64-3.8/Release/build/SAR_geo/SAR_GEO.cp38-win_amd64.exp delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/build/temp.win-amd64-3.8/Release/build/SAR_geo/SAR_GEO.cp38-win_amd64.lib delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/build/temp.win-amd64-3.8/Release/build/SAR_geo/SAR_GEO.obj delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/setup.py delete mode 100644 landcover-L-SAR/tool/algorithm/transforml1a/transHandle.py delete mode 100644 landcover-L-SAR/tool/algorithm/xml/AlgXmlHandle.py delete mode 100644 landcover-L-SAR/tool/algorithm/xml/AnalysisXml.py delete mode 100644 landcover-L-SAR/tool/algorithm/xml/CreatMetafile.py delete mode 100644 landcover-L-SAR/tool/algorithm/xml/CreateMetaDict.py delete mode 100644 landcover-L-SAR/tool/config/ConfigeHandle.py delete mode 100644 landcover-L-SAR/tool/csv/csvHandle.py delete mode 100644 landcover-L-SAR/tool/file/fileHandle.py delete mode 100644 landcover-L-SAR/tool/logs/logHandler.py delete mode 100644 landcover-L-SAR/tool/newimage.csv delete mode 100644 landcover-L-SAR/tool/testxmlreading.py delete mode 100644 soilMoisture-L-SAR/run_log/SoilMoisture2023-11-22-17-27-51.log delete mode 100644 soilMoisture-L-SAR/run_log/SoilMoisture2023-11-22-17-28-49.log delete mode 100644 soilMoisture-L-SAR/run_log/SoilMoisture2023-11-22-17-35-42.log delete mode 100644 soilMoisture-L-SAR/run_log/SoilMoisture2023-11-22-17-53-44.log delete mode 100644 soilMoisture-L-SAR/run_log/SoilMoisture2023-11-22-17-53-45.log delete mode 100644 soilMoisture-L-SAR/run_log/SoilMoisture2023-11-22-17-53-46.log delete mode 100644 surfaceRoughness-L-SAR/surface_inversion_dubois.exe delete mode 100644 surfaceRoughness-L-SAR/surface_inversion_histo.exe delete mode 100644 surfaceRoughness-L-SAR/surface_inversion_oh.exe delete mode 100644 surfaceRoughness-L-SAR/surface_inversion_oh2004_v6.0.exe diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2fcca72 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/dem-L-SAR/run_log/ diff --git a/Ortho-L-SAR/OrthoMain.py b/Ortho-L-SAR/OrthoMain.py index e991dd9..ec88429 100644 --- a/Ortho-L-SAR/OrthoMain.py +++ b/Ortho-L-SAR/OrthoMain.py @@ -12,6 +12,7 @@ import logging from tool.algorithm.block.blockprocess import BlockProcess from tool.algorithm.image.ImageHandle import ImageHandler +from tool.algorithm.xml.AnalysisXml import DictXml from tool.algorithm.xml.CreateMetaDict import CreateMetaDict, CreateProductXml from tool.algorithm.algtools.PreProcess import PreProcess as pp import tarfile @@ -523,11 +524,17 @@ class OrthoMain: pass - def cut_dem(self, dem_merged_path, meta_file_path): - left_up_lon = 0 - left_up_lat = 0 - + _, scopes = DictXml(meta_file_path).get_extend() + intersect_polygon = pp().intersect_polygon(scopes) + if intersect_polygon is None: + raise Exception('cal intersect box fail!') + shp_path = os.path.join(self.__workspace_Temporary_path, 'IntersectPolygon.shp') + if pp().write_polygon_shp(shp_path, intersect_polygon, 4326) is False: + raise Exception('create intersect shp fail!') + dem_process = os.path.join(self.__workspace_Temporary_path, 'dem_cut.tif') + pp().cut_img(dem_process, dem_merged_path, shp_path) + return dem_process def process_sim_ori(self, ori_sim, sim_ori): diff --git a/backScattering-L-SAR/BackScattering-L-SAR.xml b/backScattering-L-SAR/BackScattering-L-SAR.xml index ad8e829..fdf5e53 100644 --- a/backScattering-L-SAR/BackScattering-L-SAR.xml +++ b/backScattering-L-SAR/BackScattering-L-SAR.xml @@ -42,7 +42,7 @@ File tar.gz Cal - E:\MicroWorkspace\LT1B\LT230919\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966.tar.gz + F:\MicroWorkspace\LT1B\LT230919\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966.tar.gz True False File @@ -57,7 +57,7 @@ File tif Cal - E:\MicroWorkspace\LT1B\LT230919\DEM30m.tif + F:\MicroWorkspace\LT1B\LT230919\DEM30m.tif True True File @@ -74,7 +74,7 @@ File tar.gz Cal - D:\micro\LWork\BackScattering\Output\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966-cal.tar.gz + D:\micro\LWork\BackScattering\Output\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966-CAL.tar.gz DEFAULT DEFAULT DEFAULT diff --git a/backScattering-L-SAR/BackScatteringMain.py b/backScattering-L-SAR/BackScatteringMain.py index bb4adef..ba4bdff 100644 --- a/backScattering-L-SAR/BackScatteringMain.py +++ b/backScattering-L-SAR/BackScatteringMain.py @@ -11,6 +11,7 @@ import logging from tool.algorithm.algtools.logHandler import LogHandler from tool.algorithm.xml.AlgXmlHandle import ManageAlgXML, CheckSource +from tool.algorithm.xml.AnalysisXml import DictXml from tool.algorithm.xml.CreateMetaDict import CreateMetaDict, CreateProductXml from tool.algorithm.image.ImageHandle import ImageHandler from tool.algorithm.algtools.PreProcess import PreProcess as pp @@ -24,7 +25,6 @@ import shutil import tarfile import sys - if cf.get('debug') == 'True': DEBUG = True else: @@ -249,6 +249,18 @@ class ScatteringMain: if os.path.exists(path): self.del_floder(path) + def cut_dem(self, dem_merged_path, meta_file_path): + _, scopes = DictXml(meta_file_path).get_extend() + intersect_polygon = pp().intersect_polygon(scopes) + if intersect_polygon is None: + raise Exception('cal intersect box fail!') + shp_path = os.path.join(self.__workspace_preprocessing_path, 'IntersectPolygon.shp') + if pp().write_polygon_shp(shp_path, intersect_polygon, 4326) is False: + raise Exception('create intersect shp fail!') + dem_process = os.path.join(self.__workspace_preprocessing_path, 'dem_cut.tif') + pp().cut_img(dem_process, dem_merged_path, shp_path) + return dem_process + def process_sim_ori(self, ori_sim, sim_ori): scopes = () @@ -303,6 +315,7 @@ class ScatteringMain: out_dem_path = self.__workspace_preprocessing_path dem_merged_path=DEMProcess.dem_merged(in_dem_path, meta_file_path, out_dem_path) # 生成TestDEM\mergedDEM_VRT.tif + dem_path = self.cut_dem(dem_merged_path, meta_file_path) in_slc_path=None for slc_path in in_tif_paths: if slc_path.find(".tiff")>0 and (slc_path.find("_HH_")>0 or slc_path.find("_VV_")>0): @@ -310,7 +323,7 @@ class ScatteringMain: break # 获取校正模型后 - Orthorectification.preCaldem_sar_rc(dem_merged_path,in_slc_path,self.__workspace_preprocessing_path,self.__workspace_processing_path.replace("\\","\\\\")) # 初步筛选坐标范围 + Orthorectification.preCaldem_sar_rc(dem_path,in_slc_path,self.__workspace_preprocessing_path,self.__workspace_processing_path.replace("\\","\\\\")) # 初步筛选坐标范围 logger.info('progress bar: 40%') # clip_dem_reample_path=os.path.join(self.__workspace_preprocessing_path, "SAR_dem.tiff") # infooption=gdal.InfoOptions("-json") @@ -465,7 +478,7 @@ if __name__ == '__main__': start = datetime.datetime.now() try: if len(sys.argv)<2: - xml_path = 'BackScattering.xml' + xml_path = 'BackScattering-L-SAR.xml' else: xml_path = sys.argv[1] ScatteringMain = ScatteringMain(xml_path) diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-32-28.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-32-28.log deleted file mode 100644 index 7327b7c..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-32-28.log +++ /dev/null @@ -1,19 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -ERROR:mylog:run-time error! -Traceback (most recent call last): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 471, in - if not ScatteringMain.process_handle(start): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 292, in process_handle - Orthorectification.IndirectOrthorectification(self.__in_processing_paras["SLC"], self.__workspace_processing_path) # 改动1 - File "D:\estar-proj\microproduct-L-SAR\backScattering\BackScatteringAlg.py", line 1520, in IndirectOrthorectification - self.header_info = self.ParseHearderFile(os.path.join(FilePath_str, header_name)) - File "D:\estar-proj\microproduct-L-SAR\backScattering\BackScatteringAlg.py", line 1094, in ParseHearderFile - GPSPoints = FindInfomationFromJson(HeaderFile_dom_json, GPSNode_Path) - File "D:\estar-proj\microproduct-L-SAR\backScattering\BackScatteringAlg.py", line 131, in FindInfomationFromJson - result_node = result_node[nodename] -KeyError: 'product' -INFO:mylog:running use time: 0:00:17.072831 diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-42-11.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-42-11.log deleted file mode 100644 index 1fda6d5..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-42-11.log +++ /dev/null @@ -1,30 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -WARNING:mylog:LTMetaData.get_QualifyValue() error! -ERROR:mylog:run-time error! -Traceback (most recent call last): - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 85, in get_QualifyValue - QualifyValue = OrthoMetaData.get_QualifyValue(meta_file_path, polarization) - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 47, in get_QualifyValue - QualifyValue = float(root.find('processing').find('processingParameter').find('quantifyValue').find(polarization).text) -AttributeError: 'NoneType' object has no attribute 'find' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 471, in - if not ScatteringMain.process_handle(start): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 371, in process_handle - alg.sar_backscattering_coef(in_tif_path, meta_file_path, out_tif_path) - File "D:\estar-proj\microproduct-L-SAR\backScattering\BackScatteringAlg.py", line 93, in sar_backscattering_coef - QualifyValue = MetaDataHandler.get_QualifyValue(meta_file_path, polarization) - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 88, in get_QualifyValue - QualifyValue = GF3L1AMetaData.get_QualifyValue(meta_file_path, polarization) - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 27, in get_QualifyValue - QualifyValue = float(root.find('imageinfo').find('QualifyValue').find(polarization).text) -AttributeError: 'NoneType' object has no attribute 'find' -INFO:mylog:running use time: 0:00:26.594524 diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-44-18.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-44-18.log deleted file mode 100644 index 23b3d46..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-18-44-18.log +++ /dev/null @@ -1,30 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -WARNING:mylog:LTMetaData.get_QualifyValue() error! -ERROR:mylog:run-time error! -Traceback (most recent call last): - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 85, in get_QualifyValue - QualifyValue = OrthoMetaData.get_QualifyValue(meta_file_path, polarization) - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 47, in get_QualifyValue - QualifyValue = float(root.find('processing').find('processingParameter').find('quantifyValue').find(polarization).text) -AttributeError: 'NoneType' object has no attribute 'find' - -During handling of the above exception, another exception occurred: - -Traceback (most recent call last): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 471, in - if not ScatteringMain.process_handle(start): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 371, in process_handle - alg.sar_backscattering_coef(in_tif_path, meta_file_path, out_tif_path) - File "D:\estar-proj\microproduct-L-SAR\backScattering\BackScatteringAlg.py", line 93, in sar_backscattering_coef - QualifyValue = MetaDataHandler.get_QualifyValue(meta_file_path, polarization) - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 88, in get_QualifyValue - QualifyValue = GF3L1AMetaData.get_QualifyValue(meta_file_path, polarization) - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\algtools\MetaDataHandler.py", line 27, in get_QualifyValue - QualifyValue = float(root.find('imageinfo').find('QualifyValue').find(polarization).text) -AttributeError: 'NoneType' object has no attribute 'find' -INFO:mylog:running use time: 0:08:05.774058 diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-00-41.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-00-41.log deleted file mode 100644 index 36a1087..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-00-41.log +++ /dev/null @@ -1,5 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-03-11.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-03-11.log deleted file mode 100644 index 1336962..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-03-11.log +++ /dev/null @@ -1,17 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -INFO:mylog:progress bar: 90% -ERROR:mylog:run-time error! -Traceback (most recent call last): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 471, in - if not ScatteringMain.process_handle(start): - File "D:/estar-proj/microproduct-L-SAR/backScattering/BackScatteringMain.py", line 437, in process_handle - para_dict = CreateMetaDict(image_path, self.__in_processing_paras['META'], self.__workspace_processing_path, - File "D:\estar-proj\microproduct-L-SAR\tool\algorithm\xml\CreateMetaDict.py", line 58, in calu_nature - imageinfo_widthspace = self.ImageHandler.get_geotransform(self.out_path1)[1] # 投影后的分辨率 -TypeError: 'NoneType' object is not subscriptable -INFO:mylog:running use time: 0:10:04.334320 diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-27-00.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-27-00.log deleted file mode 100644 index 1e18da4..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-27-00.log +++ /dev/null @@ -1,7 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -INFO:mylog:progress bar: 90% diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-40-46.log b/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-40-46.log deleted file mode 100644 index 1e18da4..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-21-19-40-46.log +++ /dev/null @@ -1,7 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -INFO:mylog:progress bar: 90% diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-22-11-12-38.log b/backScattering-L-SAR/run_log/BackScattering2023-11-22-11-12-38.log deleted file mode 100644 index 67404de..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-22-11-12-38.log +++ /dev/null @@ -1,11 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -INFO:mylog:progress bar: 90% -INFO:mylog:process_handle finished! -INFO:mylog:progress bar: 100% -INFO:mylog:successful production of backscattering products! -INFO:mylog:running use time: 0:12:32.600524 diff --git a/backScattering-L-SAR/run_log/BackScattering2023-11-22-16-29-13.log b/backScattering-L-SAR/run_log/BackScattering2023-11-22-16-29-13.log deleted file mode 100644 index 74fd804..0000000 --- a/backScattering-L-SAR/run_log/BackScattering2023-11-22-16-29-13.log +++ /dev/null @@ -1,11 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-L-SAR\backScattering -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:mylog:progress bar: 30% -INFO:mylog:progress bar: 40% -INFO:mylog:progress bar: 90% -INFO:mylog:process_handle finished! -INFO:mylog:progress bar: 100% -INFO:mylog:successful production of backscattering products! -INFO:mylog:running use time: 0:12:19.438164 diff --git a/landcover-L-SAR/LandCover-L-SAR.xml b/landcover-L-SAR/LandCover-L-SAR.xml index d918d69..27c590e 100644 --- a/landcover-L-SAR/LandCover-L-SAR.xml +++ b/landcover-L-SAR/LandCover-L-SAR.xml @@ -38,7 +38,7 @@ File tar.gz Man - E:\MicroWorkspace\LT1B\LT230919\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966-ortho.tar.gz + F:\MicroWorkspace\LT1B\LT230919\LT1B_MONO_MYC_STRIP4_005860_E130.9_N47.7_20230327_SLC_AHV_L1A_0000086966-ortho.tar.gz True False File @@ -53,7 +53,7 @@ File csv Man - E:\MicroWorkspace\LT1B\LT230919\LT1B_landaCoverSample.csv + F:\MicroWorkspace\LT1B\LT230919\LT1B_landaCoverSample.csv True True UploadInput diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-12-37-08.log b/landcover-L-SAR/run_log/LandCover2024-01-12-12-37-08.log deleted file mode 100644 index e52ddfc..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-12-37-08.log +++ /dev/null @@ -1,21 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-l-sar\landcover-L-SAR -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:root:scope0:[[130.58930555555554, 47.875416666666666], [131.11458333333331, 47.875416666666666], [130.58930555555554, 47.428472222222226], [131.11458333333331, 47.428472222222226]] -INFO:root:scope1:[[130.58930555555554, 47.875416666666666], [131.11458333333331, 47.875416666666666], [130.58930555555554, 47.428472222222226], [131.11458333333331, 47.428472222222226]] -INFO:root:scope roi :[(130.58930555555554, 47.428472222222226), (130.58930555555554, 47.875416666666666), (131.11458333333331, 47.875416666666666), (131.11458333333331, 47.428472222222226)] -INFO:mylog:cut sim_ori success! -INFO:mylog:preprocess_handle success! -INFO:mylog:1,water,num:2598827 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:2,build,num:260469 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:3,dryland,num:12290 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:4,road,num:803810 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:read csv data success! -INFO:mylog:progress bar: 20% -INFO:mylog:refine_lee filter success! -INFO:mylog:progress bar: 30% diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-00-19.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-00-19.log deleted file mode 100644 index 9e9fca9..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-00-19.log +++ /dev/null @@ -1,44 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-l-sar\landcover-L-SAR -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! -INFO:mylog:check_source success! -INFO:root:scope0:[[130.58930555555554, 47.875416666666666], [131.11458333333331, 47.875416666666666], [130.58930555555554, 47.428472222222226], [131.11458333333331, 47.428472222222226]] -INFO:root:scope1:[[130.58930555555554, 47.875416666666666], [131.11458333333331, 47.875416666666666], [130.58930555555554, 47.428472222222226], [131.11458333333331, 47.428472222222226]] -INFO:root:scope roi :[(130.58930555555554, 47.428472222222226), (130.58930555555554, 47.875416666666666), (131.11458333333331, 47.875416666666666), (131.11458333333331, 47.428472222222226)] -INFO:mylog:cut sim_ori success! -INFO:mylog:preprocess_handle success! -INFO:mylog:1,water,num:2598827 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:2,build,num:260469 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:3,dryland,num:12290 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:4,road,num:803810 -INFO:mylog:max number =10000, random select10000 point as train data! -INFO:mylog:read csv data success! -INFO:mylog:progress bar: 20% -INFO:mylog:refine_lee filter success! -INFO:mylog:progress bar: 30% -INFO:root:feature_tif_paths:{'Freeman_Dbl': 'D:\\micro\\LWork\\LandCover\\Temporary\\processing\\feature_tif\\Freeman_Dbl.tif', 'Freeman_Odd': 'D:\\micro\\LWork\\LandCover\\Temporary\\processing\\feature_tif\\Freeman_Odd.tif', 'Freeman_Vol': 'D:\\micro\\LWork\\LandCover\\Temporary\\processing\\feature_tif\\Freeman_Vol.tif'} -INFO:mylog:decompose feature success! -INFO:mylog:progress bar: 50% -INFO:mylog:feature_list:['0: Freeman_Dbl_geo.tif', '1: Freeman_Odd_geo.tif', '2: Freeman_Vol_geo.tif'] -INFO:mylog:gene_train_set success! -INFO:mylog:importances:[0.0872527 0.40417686 0.50857044],threshold=0.07 -INFO:mylog:optimal_feature:[2, 1, 0] -INFO:mylog:correlation_map: - [[0. 1. 1.] - [0. 0. 1.] - [0. 0. 0.]] -INFO:mylog:validity_list_corr:[2] -INFO:mylog:[2] -INFO:mylog:train_feature:['2: Freeman_Vol_geo.tif'] -INFO:mylog:RF trainning -INFO:mylog:RF train successful -INFO:mylog:progress bar: 60% -INFO:mylog:test_feature:dict_keys(['Freeman_Vol_geo']) -INFO:mylog:blocking tifs success! -INFO:mylog:create features matrix success! -INFO:mylog:testing -INFO:mylog:test success! -INFO:mylog:progress bar: 95% diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-17.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-17.log deleted file mode 100644 index 2f72cbd..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-17.log +++ /dev/null @@ -1,30 +0,0 @@ -INFO:mylog:total:195,block:0 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_0_1024.tif -INFO:mylog:total:195,block:1 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_10240_11264.tif -INFO:mylog:total:195,block:9 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_4096_5120.tif -INFO:mylog:total:195,block:10 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_5120_6144.tif -INFO:mylog:total:195,block:19 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_12288_13312.tif -INFO:mylog:total:195,block:20 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_13312_14336.tif -INFO:mylog:total:195,block:29 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_9216_10240.tif -INFO:mylog:total:195,block:30 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_0_1024.tif -INFO:mylog:total:195,block:40 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_5120_6144.tif -INFO:mylog:total:195,block:41 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_6144_7168.tif -INFO:mylog:total:195,block:52 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_2048_3072.tif -INFO:mylog:total:195,block:53 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_3072_4096.tif -INFO:mylog:total:195,block:64 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_12288_13312.tif -INFO:mylog:total:195,block:65 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_13312_14336.tif -INFO:mylog:total:195,block:77 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_1024_2048.tif -INFO:mylog:total:195,block:78 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_11264_12288.tif -INFO:mylog:total:195,block:92 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_1024_2048.tif -INFO:mylog:total:195,block:93 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_11264_12288.tif -INFO:mylog:total:195,block:107 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_1024_2048.tif -INFO:mylog:total:195,block:108 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_11264_12288.tif -INFO:mylog:total:195,block:122 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_1024_2048.tif -INFO:mylog:total:195,block:123 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_11264_12288.tif -INFO:mylog:total:195,block:137 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_1024_2048.tif -INFO:mylog:total:195,block:138 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_11264_12288.tif -INFO:mylog:total:195,block:152 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_1024_2048.tif -INFO:mylog:total:195,block:153 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_11264_12288.tif -INFO:mylog:total:195,block:167 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_1024_2048.tif -INFO:mylog:total:195,block:168 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_11264_12288.tif -INFO:mylog:total:195,block:182 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_1024_2048.tif -INFO:mylog:total:195,block:183 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_11264_12288.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-18.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-18.log deleted file mode 100644 index dbe6805..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-18.log +++ /dev/null @@ -1,15 +0,0 @@ -INFO:mylog:total:195,block:2 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_1024_2048.tif -INFO:mylog:total:195,block:11 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_6144_7168.tif -INFO:mylog:total:195,block:21 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_13931_14955.tif -INFO:mylog:total:195,block:31 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_10240_11264.tif -INFO:mylog:total:195,block:42 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_7168_8192.tif -INFO:mylog:total:195,block:54 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_4096_5120.tif -INFO:mylog:total:195,block:67 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_2048_3072.tif -INFO:mylog:total:195,block:80 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_13312_14336.tif -INFO:mylog:total:195,block:95 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_13312_14336.tif -INFO:mylog:total:195,block:110 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_13312_14336.tif -INFO:mylog:total:195,block:125 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_13312_14336.tif -INFO:mylog:total:195,block:140 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_13312_14336.tif -INFO:mylog:total:195,block:155 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_13312_14336.tif -INFO:mylog:total:195,block:170 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_13312_14336.tif -INFO:mylog:total:195,block:185 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_13312_14336.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-19.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-19.log deleted file mode 100644 index a62309d..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-19.log +++ /dev/null @@ -1,30 +0,0 @@ -INFO:mylog:total:195,block:3 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_11264_12288.tif -INFO:mylog:total:195,block:4 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_12288_13312.tif -INFO:mylog:total:195,block:12 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_7168_8192.tif -INFO:mylog:total:195,block:13 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_8192_9216.tif -INFO:mylog:total:195,block:22 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_2048_3072.tif -INFO:mylog:total:195,block:23 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_3072_4096.tif -INFO:mylog:total:195,block:32 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_1024_2048.tif -INFO:mylog:total:195,block:33 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_11264_12288.tif -INFO:mylog:total:195,block:43 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_8192_9216.tif -INFO:mylog:total:195,block:44 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_9216_10240.tif -INFO:mylog:total:195,block:55 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_5120_6144.tif -INFO:mylog:total:195,block:56 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_6144_7168.tif -INFO:mylog:total:195,block:68 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_3072_4096.tif -INFO:mylog:total:195,block:69 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_4096_5120.tif -INFO:mylog:total:195,block:82 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_2048_3072.tif -INFO:mylog:total:195,block:83 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_3072_4096.tif -INFO:mylog:total:195,block:97 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_2048_3072.tif -INFO:mylog:total:195,block:98 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_3072_4096.tif -INFO:mylog:total:195,block:112 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_2048_3072.tif -INFO:mylog:total:195,block:113 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_3072_4096.tif -INFO:mylog:total:195,block:127 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_2048_3072.tif -INFO:mylog:total:195,block:128 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_3072_4096.tif -INFO:mylog:total:195,block:142 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_2048_3072.tif -INFO:mylog:total:195,block:143 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_3072_4096.tif -INFO:mylog:total:195,block:157 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_2048_3072.tif -INFO:mylog:total:195,block:158 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_3072_4096.tif -INFO:mylog:total:195,block:172 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_2048_3072.tif -INFO:mylog:total:195,block:173 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_3072_4096.tif -INFO:mylog:total:195,block:187 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_2048_3072.tif -INFO:mylog:total:195,block:188 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_3072_4096.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-21.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-21.log deleted file mode 100644 index 8bfa6a2..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-21.log +++ /dev/null @@ -1,30 +0,0 @@ -INFO:mylog:total:195,block:5 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_13312_14336.tif -INFO:mylog:total:195,block:6 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_13931_14955.tif -INFO:mylog:total:195,block:14 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_9216_10240.tif -INFO:mylog:total:195,block:15 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_0_1024.tif -INFO:mylog:total:195,block:24 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_4096_5120.tif -INFO:mylog:total:195,block:25 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_5120_6144.tif -INFO:mylog:total:195,block:35 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_13312_14336.tif -INFO:mylog:total:195,block:36 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_13931_14955.tif -INFO:mylog:total:195,block:46 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_10240_11264.tif -INFO:mylog:total:195,block:47 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_1024_2048.tif -INFO:mylog:total:195,block:58 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_8192_9216.tif -INFO:mylog:total:195,block:59 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_9216_10240.tif -INFO:mylog:total:195,block:71 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_6144_7168.tif -INFO:mylog:total:195,block:72 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_7168_8192.tif -INFO:mylog:total:195,block:85 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_5120_6144.tif -INFO:mylog:total:195,block:86 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_6144_7168.tif -INFO:mylog:total:195,block:100 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_5120_6144.tif -INFO:mylog:total:195,block:101 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_6144_7168.tif -INFO:mylog:total:195,block:115 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_5120_6144.tif -INFO:mylog:total:195,block:116 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_6144_7168.tif -INFO:mylog:total:195,block:130 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_5120_6144.tif -INFO:mylog:total:195,block:131 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_6144_7168.tif -INFO:mylog:total:195,block:145 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_5120_6144.tif -INFO:mylog:total:195,block:146 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_6144_7168.tif -INFO:mylog:total:195,block:160 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_5120_6144.tif -INFO:mylog:total:195,block:161 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_6144_7168.tif -INFO:mylog:total:195,block:175 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_5120_6144.tif -INFO:mylog:total:195,block:176 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_6144_7168.tif -INFO:mylog:total:195,block:190 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_5120_6144.tif -INFO:mylog:total:195,block:191 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_6144_7168.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-22.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-22.log deleted file mode 100644 index 9236693..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-22.log +++ /dev/null @@ -1,15 +0,0 @@ -INFO:mylog:total:195,block:7 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_2048_3072.tif -INFO:mylog:total:195,block:16 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_10240_11264.tif -INFO:mylog:total:195,block:26 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_6144_7168.tif -INFO:mylog:total:195,block:37 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_2048_3072.tif -INFO:mylog:total:195,block:49 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_12288_13312.tif -INFO:mylog:total:195,block:61 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_10240_11264.tif -INFO:mylog:total:195,block:74 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_9216_10240.tif -INFO:mylog:total:195,block:88 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_8192_9216.tif -INFO:mylog:total:195,block:103 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_8192_9216.tif -INFO:mylog:total:195,block:118 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_8192_9216.tif -INFO:mylog:total:195,block:133 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_8192_9216.tif -INFO:mylog:total:195,block:148 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_8192_9216.tif -INFO:mylog:total:195,block:163 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_8192_9216.tif -INFO:mylog:total:195,block:178 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_8192_9216.tif -INFO:mylog:total:195,block:193 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_8192_9216.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-23.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-23.log deleted file mode 100644 index 765725c..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-23.log +++ /dev/null @@ -1,14 +0,0 @@ -INFO:mylog:total:195,block:8 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_0_1024_3072_4096.tif -INFO:mylog:total:195,block:18 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_11264_12288.tif -INFO:mylog:total:195,block:28 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_8192_9216.tif -INFO:mylog:total:195,block:39 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_4096_5120.tif -INFO:mylog:total:195,block:51 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_13931_14955.tif -INFO:mylog:total:195,block:63 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_11264_12288.tif -INFO:mylog:total:195,block:76 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_10240_11264.tif -INFO:mylog:total:195,block:91 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_10240_11264.tif -INFO:mylog:total:195,block:106 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_10240_11264.tif -INFO:mylog:total:195,block:121 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_10240_11264.tif -INFO:mylog:total:195,block:136 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_10240_11264.tif -INFO:mylog:total:195,block:151 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_10240_11264.tif -INFO:mylog:total:195,block:166 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_10240_11264.tif -INFO:mylog:total:195,block:181 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_10240_11264.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-25.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-25.log deleted file mode 100644 index eaf286a..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-25.log +++ /dev/null @@ -1,14 +0,0 @@ -INFO:mylog:total:195,block:17 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_1024_2048.tif -INFO:mylog:total:195,block:27 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_10240_11264_7168_8192.tif -INFO:mylog:total:195,block:38 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_3072_4096.tif -INFO:mylog:total:195,block:50 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_13312_14336.tif -INFO:mylog:total:195,block:62 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_1024_2048.tif -INFO:mylog:total:195,block:75 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_0_1024.tif -INFO:mylog:total:195,block:89 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_9216_10240.tif -INFO:mylog:total:195,block:104 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_9216_10240.tif -INFO:mylog:total:195,block:119 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_9216_10240.tif -INFO:mylog:total:195,block:134 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_9216_10240.tif -INFO:mylog:total:195,block:149 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_9216_10240.tif -INFO:mylog:total:195,block:164 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_9216_10240.tif -INFO:mylog:total:195,block:179 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_9216_10240.tif -INFO:mylog:total:195,block:194 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_9216_10240.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-26.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-26.log deleted file mode 100644 index 35b4f61..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-26.log +++ /dev/null @@ -1,23 +0,0 @@ -INFO:mylog:total:195,block:34 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_1024_2048_12288_13312.tif -INFO:mylog:total:195,block:45 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_0_1024.tif -INFO:mylog:total:195,block:48 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_11264_12288.tif -INFO:mylog:total:195,block:57 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11264_12288_7168_8192.tif -INFO:mylog:total:195,block:60 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_0_1024.tif -INFO:mylog:total:195,block:70 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_5120_6144.tif -INFO:mylog:total:195,block:73 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_8192_9216.tif -INFO:mylog:total:195,block:84 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_4096_5120.tif -INFO:mylog:total:195,block:87 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_7168_8192.tif -INFO:mylog:total:195,block:99 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_4096_5120.tif -INFO:mylog:total:195,block:102 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_7168_8192.tif -INFO:mylog:total:195,block:114 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_4096_5120.tif -INFO:mylog:total:195,block:117 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_7168_8192.tif -INFO:mylog:total:195,block:129 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_4096_5120.tif -INFO:mylog:total:195,block:132 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_7168_8192.tif -INFO:mylog:total:195,block:144 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_4096_5120.tif -INFO:mylog:total:195,block:147 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_7168_8192.tif -INFO:mylog:total:195,block:159 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_4096_5120.tif -INFO:mylog:total:195,block:162 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_7168_8192.tif -INFO:mylog:total:195,block:174 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_4096_5120.tif -INFO:mylog:total:195,block:177 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_7168_8192.tif -INFO:mylog:total:195,block:189 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_4096_5120.tif -INFO:mylog:total:195,block:192 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_7168_8192.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-27.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-27.log deleted file mode 100644 index b7eb1e1..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-27.log +++ /dev/null @@ -1,9 +0,0 @@ -INFO:mylog:total:195,block:66 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_11701_12725_13931_14955.tif -INFO:mylog:total:195,block:79 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_12288_13312.tif -INFO:mylog:total:195,block:94 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_12288_13312.tif -INFO:mylog:total:195,block:109 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_12288_13312.tif -INFO:mylog:total:195,block:124 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_12288_13312.tif -INFO:mylog:total:195,block:139 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_12288_13312.tif -INFO:mylog:total:195,block:154 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_12288_13312.tif -INFO:mylog:total:195,block:169 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_12288_13312.tif -INFO:mylog:total:195,block:184 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_12288_13312.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-28.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-28.log deleted file mode 100644 index 7f44211..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-28.log +++ /dev/null @@ -1,8 +0,0 @@ -INFO:mylog:total:195,block:81 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_2048_3072_13931_14955.tif -INFO:mylog:total:195,block:96 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_13931_14955.tif -INFO:mylog:total:195,block:111 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_13931_14955.tif -INFO:mylog:total:195,block:126 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_13931_14955.tif -INFO:mylog:total:195,block:141 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_13931_14955.tif -INFO:mylog:total:195,block:156 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_13931_14955.tif -INFO:mylog:total:195,block:171 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_13931_14955.tif -INFO:mylog:total:195,block:186 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_13931_14955.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-29.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-29.log deleted file mode 100644 index e144039..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-15-29.log +++ /dev/null @@ -1,7 +0,0 @@ -INFO:mylog:total:195,block:90 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_3072_4096_0_1024.tif -INFO:mylog:total:195,block:105 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_4096_5120_0_1024.tif -INFO:mylog:total:195,block:120 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_5120_6144_0_1024.tif -INFO:mylog:total:195,block:135 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_6144_7168_0_1024.tif -INFO:mylog:total:195,block:150 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_7168_8192_0_1024.tif -INFO:mylog:total:195,block:165 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_8192_9216_0_1024.tif -INFO:mylog:total:195,block:180 testing data !path:D:\micro\LWork\LandCover\Temporary\processing\LandCover\LandCover_9216_10240_0_1024.tif diff --git a/landcover-L-SAR/run_log/LandCover2024-01-12-13-18-30.log b/landcover-L-SAR/run_log/LandCover2024-01-12-13-18-30.log deleted file mode 100644 index 8dda3b0..0000000 --- a/landcover-L-SAR/run_log/LandCover2024-01-12-13-18-30.log +++ /dev/null @@ -1,3 +0,0 @@ -INFO:mylog:sysdir: D:\estar-proj\microproduct-l-sar\landcover-L-SAR -INFO:mylog:init algXML succeed -INFO:mylog:create new workspace success! diff --git a/landcover-L-SAR/tool/LAI/LAIProcess.cp38-win_amd64.pyd b/landcover-L-SAR/tool/LAI/LAIProcess.cp38-win_amd64.pyd deleted file mode 100644 index bc5375eb3a256dc2e99d56aac327084d2af1e8d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101888 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 else np.nan - result[i,j]=temp - j=j+1 - i=i+1 - return result - \ No newline at end of file diff --git a/landcover-L-SAR/tool/LAI/build/LAIProcess.c b/landcover-L-SAR/tool/LAI/build/LAIProcess.c deleted file mode 100644 index eb1f143..0000000 --- a/landcover-L-SAR/tool/LAI/build/LAIProcess.c +++ /dev/null @@ -1,11637 +0,0 @@ -/* Generated by Cython 0.29.24 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [], - "name": "LAIProcess", - "sources": [ - "./LAIProcess.pyx" - ] - }, - "module_name": "LAIProcess" -} -END: Cython Metadata */ - -#ifndef PY_SSIZE_T_CLEAN -#define PY_SSIZE_T_CLEAN -#endif /* PY_SSIZE_T_CLEAN */ -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_29_24" -#define CYTHON_HEX_VERSION 0x001D18F0 -#define CYTHON_FUTURE_DIVISION 0 -#include -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif - #ifndef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) - #endif - #ifndef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK - #ifdef SIZEOF_VOID_P - enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; - #endif -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" -#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#endif - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#ifndef METH_STACKLESS - #define METH_STACKLESS 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 - #define PyMem_RawMalloc(n) PyMem_Malloc(n) - #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) - #define PyMem_RawFree(p) PyMem_Free(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #if defined(PyUnicode_IS_READY) - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #else - #define __Pyx_PyUnicode_READY(op) (0) - #endif - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) - #endif - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) - #endif -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact -#ifndef PyObject_Unicode - #define PyObject_Unicode PyObject_Str -#endif -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if PY_VERSION_HEX >= 0x030900A4 - #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) -#else - #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - -#define __PYX_MARK_ERR_POS(f_index, lineno) \ - { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } -#define __PYX_ERR(f_index, lineno, Ln_error) \ - { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__LAIProcess -#define __PYX_HAVE_API__LAIProcess -/* Early includes */ -#include -#include -#include "numpy/arrayobject.h" -#include "numpy/ndarrayobject.h" -#include "numpy/ndarraytypes.h" -#include "numpy/arrayscalars.h" -#include "numpy/ufuncobject.h" - - /* NumPy API declarations from "numpy/__init__.pxd" */ - -#include -#ifdef _OPENMP -#include -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { - return (size_t) i < (size_t) limit; -} -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - -/* Header.proto */ -#if !defined(CYTHON_CCOMPLEX) - #if defined(__cplusplus) - #define CYTHON_CCOMPLEX 1 - #elif defined(_Complex_I) - #define CYTHON_CCOMPLEX 1 - #else - #define CYTHON_CCOMPLEX 0 - #endif -#endif -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #include - #else - #include - #endif -#endif -#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) - #undef _Complex_I - #define _Complex_I 1.0fj -#endif - - -static const char *__pyx_f[] = { - "LAIProcess.pyx", - "__init__.pxd", - "type.pxd", -}; -/* BufferFormatStructs.proto */ -#define IS_UNSIGNED(type) (((type) -1) > 0) -struct __Pyx_StructField_; -#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) -typedef struct { - const char* name; - struct __Pyx_StructField_* fields; - size_t size; - size_t arraysize[8]; - int ndim; - char typegroup; - char is_unsigned; - int flags; -} __Pyx_TypeInfo; -typedef struct __Pyx_StructField_ { - __Pyx_TypeInfo* type; - const char* name; - size_t offset; -} __Pyx_StructField; -typedef struct { - __Pyx_StructField* field; - size_t parent_offset; -} __Pyx_BufFmt_StackElem; -typedef struct { - __Pyx_StructField root; - __Pyx_BufFmt_StackElem* head; - size_t fmt_offset; - size_t new_count, enc_count; - size_t struct_alignment; - int is_complex; - char enc_type; - char new_packmode; - char enc_packmode; - char is_valid_array; -} __Pyx_BufFmt_Context; - - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":690 - * # in Cython to enable them only on the right systems. - * - * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - */ -typedef npy_int8 __pyx_t_5numpy_int8_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":691 - * - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t - */ -typedef npy_int16 __pyx_t_5numpy_int16_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":692 - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< - * ctypedef npy_int64 int64_t - * #ctypedef npy_int96 int96_t - */ -typedef npy_int32 __pyx_t_5numpy_int32_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":693 - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< - * #ctypedef npy_int96 int96_t - * #ctypedef npy_int128 int128_t - */ -typedef npy_int64 __pyx_t_5numpy_int64_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":697 - * #ctypedef npy_int128 int128_t - * - * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - */ -typedef npy_uint8 __pyx_t_5numpy_uint8_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":698 - * - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t - */ -typedef npy_uint16 __pyx_t_5numpy_uint16_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":699 - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< - * ctypedef npy_uint64 uint64_t - * #ctypedef npy_uint96 uint96_t - */ -typedef npy_uint32 __pyx_t_5numpy_uint32_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":700 - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< - * #ctypedef npy_uint96 uint96_t - * #ctypedef npy_uint128 uint128_t - */ -typedef npy_uint64 __pyx_t_5numpy_uint64_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":704 - * #ctypedef npy_uint128 uint128_t - * - * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< - * ctypedef npy_float64 float64_t - * #ctypedef npy_float80 float80_t - */ -typedef npy_float32 __pyx_t_5numpy_float32_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":705 - * - * ctypedef npy_float32 float32_t - * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< - * #ctypedef npy_float80 float80_t - * #ctypedef npy_float128 float128_t - */ -typedef npy_float64 __pyx_t_5numpy_float64_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":714 - * # The int types are mapped a bit surprising -- - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong long_t - * ctypedef npy_longlong longlong_t - */ -typedef npy_long __pyx_t_5numpy_int_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":715 - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t - * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong longlong_t - * - */ -typedef npy_longlong __pyx_t_5numpy_long_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":716 - * ctypedef npy_long int_t - * ctypedef npy_longlong long_t - * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_ulong uint_t - */ -typedef npy_longlong __pyx_t_5numpy_longlong_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":718 - * ctypedef npy_longlong longlong_t - * - * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulong_t - * ctypedef npy_ulonglong ulonglong_t - */ -typedef npy_ulong __pyx_t_5numpy_uint_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":719 - * - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulonglong_t - * - */ -typedef npy_ulonglong __pyx_t_5numpy_ulong_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":720 - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulong_t - * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_intp intp_t - */ -typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":722 - * ctypedef npy_ulonglong ulonglong_t - * - * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< - * ctypedef npy_uintp uintp_t - * - */ -typedef npy_intp __pyx_t_5numpy_intp_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":723 - * - * ctypedef npy_intp intp_t - * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< - * - * ctypedef npy_double float_t - */ -typedef npy_uintp __pyx_t_5numpy_uintp_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":725 - * ctypedef npy_uintp uintp_t - * - * ctypedef npy_double float_t # <<<<<<<<<<<<<< - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t - */ -typedef npy_double __pyx_t_5numpy_float_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":726 - * - * ctypedef npy_double float_t - * ctypedef npy_double double_t # <<<<<<<<<<<<<< - * ctypedef npy_longdouble longdouble_t - * - */ -typedef npy_double __pyx_t_5numpy_double_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":727 - * ctypedef npy_double float_t - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cfloat cfloat_t - */ -typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* Declarations.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - typedef ::std::complex< float > __pyx_t_float_complex; - #else - typedef float _Complex __pyx_t_float_complex; - #endif -#else - typedef struct { float real, imag; } __pyx_t_float_complex; -#endif -static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); - -/* Declarations.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - typedef ::std::complex< double > __pyx_t_double_complex; - #else - typedef double _Complex __pyx_t_double_complex; - #endif -#else - typedef struct { double real, imag; } __pyx_t_double_complex; -#endif -static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); - - -/*--- Type declarations ---*/ -struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel; -struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel; -struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":729 - * ctypedef npy_longdouble longdouble_t - * - * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t - */ -typedef npy_cfloat __pyx_t_5numpy_cfloat_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":730 - * - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< - * ctypedef npy_clongdouble clongdouble_t - * - */ -typedef npy_cdouble __pyx_t_5numpy_cdouble_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":731 - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cdouble complex_t - */ -typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":733 - * ctypedef npy_clongdouble clongdouble_t - * - * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew1(a): - */ -typedef npy_cdouble __pyx_t_5numpy_complex_t; - -/* "LAIProcess.pyx":42 - * - * - * def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ -struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel { - PyObject_HEAD - PyObject *__pyx_v_lai_water_inc_sigma_list; -}; - - -/* "LAIProcess.pyx":82 - * return h[0] - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ -struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel { - PyObject_HEAD - PyObject *__pyx_v_csv_sigma; - PyObject *__pyx_v_param_arr; - PyObject *__pyx_v_sample_inc; - PyObject *__pyx_v_sample_soil; -}; - - -/* "LAIProcess.pyx":130 - * return err - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): # <<<<<<<<<<<<<< - * - * if(sigma<0 ): - */ -struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel { - PyObject_HEAD - PyObject *__pyx_v_inc_angle; - PyObject *__pyx_v_param_arr; - PyObject *__pyx_v_sigma; - PyObject *__pyx_v_soil_water; -}; - - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* RaiseTooManyValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); - -/* RaiseNeedMoreValuesToUnpack.proto */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); - -/* IterFinish.proto */ -static CYTHON_INLINE int __Pyx_IterFinish(void); - -/* UnpackItemEndCheck.proto */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyDictVersioning.proto */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) -#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ - (version_var) = __PYX_GET_DICT_VERSION(dict);\ - (cache_var) = (value); -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __pyx_dict_cached_value;\ - } else {\ - (VAR) = __pyx_dict_cached_value = (LOOKUP);\ - __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ - }\ -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); -#else -#define __PYX_GET_DICT_VERSION(dict) (0) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); -#endif - -/* GetModuleGlobalName.proto */ -#if CYTHON_USE_DICT_VERSIONS -#define __Pyx_GetModuleGlobalName(var, name) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ - (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ - __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} -#define __Pyx_GetModuleGlobalNameUncached(var, name) {\ - PY_UINT64_T __pyx_dict_version;\ - PyObject *__pyx_dict_cached_value;\ - (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); -#else -#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) -#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ - ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCall2Args.proto */ -static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyIntBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyInt_SubtractCObj(op1, op2, intval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) -#endif - -/* None.proto */ -static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname); - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ListAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - __Pyx_SET_SIZE(list, len + 1); - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_PyList_Append(L,x) PyList_Append(L,x) -#endif - -/* FetchCommonType.proto */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); - -/* CythonFunctionShared.proto */ -#define __Pyx_CyFunction_USED 1 -#define __Pyx_CYFUNCTION_STATICMETHOD 0x01 -#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 -#define __Pyx_CYFUNCTION_CCLASS 0x04 -#define __Pyx_CyFunction_GetClosure(f)\ - (((__pyx_CyFunctionObject *) (f))->func_closure) -#define __Pyx_CyFunction_GetClassObj(f)\ - (((__pyx_CyFunctionObject *) (f))->func_classobj) -#define __Pyx_CyFunction_Defaults(type, f)\ - ((type *)(((__pyx_CyFunctionObject *) (f))->defaults)) -#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ - ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g) -typedef struct { - PyCFunctionObject func; -#if PY_VERSION_HEX < 0x030500A0 - PyObject *func_weakreflist; -#endif - PyObject *func_dict; - PyObject *func_name; - PyObject *func_qualname; - PyObject *func_doc; - PyObject *func_globals; - PyObject *func_code; - PyObject *func_closure; - PyObject *func_classobj; - void *defaults; - int defaults_pyobjects; - size_t defaults_size; // used by FusedFunction for copying defaults - int flags; - PyObject *defaults_tuple; - PyObject *defaults_kwdict; - PyObject *(*defaults_getter)(PyObject *); - PyObject *func_annotations; -} __pyx_CyFunctionObject; -static PyTypeObject *__pyx_CyFunctionType = 0; -#define __Pyx_CyFunction_Check(obj) (__Pyx_TypeCheck(obj, __pyx_CyFunctionType)) -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *self, - PyObject *module, PyObject *globals, - PyObject* code); -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, - size_t size, - int pyobjects); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, - PyObject *tuple); -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, - PyObject *dict); -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, - PyObject *dict); -static int __pyx_CyFunction_init(void); - -/* CythonFunction.proto */ -static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, - int flags, PyObject* qualname, - PyObject *closure, - PyObject *module, PyObject *globals, - PyObject* code); - -/* ListCompAppend.proto */ -#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS -static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { - PyListObject* L = (PyListObject*) list; - Py_ssize_t len = Py_SIZE(list); - if (likely(L->allocated > len)) { - Py_INCREF(x); - PyList_SET_ITEM(list, len, x); - __Pyx_SET_SIZE(list, len + 1); - return 0; - } - return PyList_Append(list, x); -} -#else -#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) -#endif - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* IsLittleEndian.proto */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); - -/* BufferFormatCheck.proto */ -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); - -/* BufferGetAndValidate.proto */ -#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ - ((obj == Py_None || obj == NULL) ?\ - (__Pyx_ZeroBuffer(buf), 0) :\ - __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) -static int __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj, - __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); -static void __Pyx_ZeroBuffer(Py_buffer* buf); -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; -static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -/* BufferIndexError.proto */ -static void __Pyx_RaiseBufferIndexError(int axis); - -#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* GetTopmostException.proto */ -#if CYTHON_USE_EXC_INFO_STACK -static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* IncludeStringH.proto */ -#include - -/* PyObject_GenericGetAttrNoDict.proto */ -#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr -#endif - -/* TypeImport.proto */ -#ifndef __PYX_HAVE_RT_ImportType_proto -#define __PYX_HAVE_RT_ImportType_proto -enum __Pyx_ImportType_CheckSize { - __Pyx_ImportType_CheckSize_Error = 0, - __Pyx_ImportType_CheckSize_Warn = 1, - __Pyx_ImportType_CheckSize_Ignore = 2 -}; -static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); -#endif - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* BufferStructDeclare.proto */ -typedef struct { - Py_ssize_t shape, strides, suboffsets; -} __Pyx_Buf_DimInfo; -typedef struct { - size_t refcount; - Py_buffer pybuffer; -} __Pyx_Buffer; -typedef struct { - __Pyx_Buffer *rcbuffer; - char *data; - __Pyx_Buf_DimInfo diminfo[8]; -} __Pyx_LocalBuf_ND; - -#if PY_MAJOR_VERSION < 3 - static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); - static void __Pyx_ReleaseBuffer(Py_buffer *view); -#else - #define __Pyx_GetBuffer PyObject_GetBuffer - #define __Pyx_ReleaseBuffer PyBuffer_Release -#endif - - -/* GCCDiagnostics.proto */ -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#define __Pyx_HAS_GCC_DIAGNOSTIC -#endif - -/* RealImag.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #define __Pyx_CREAL(z) ((z).real()) - #define __Pyx_CIMAG(z) ((z).imag()) - #else - #define __Pyx_CREAL(z) (__real__(z)) - #define __Pyx_CIMAG(z) (__imag__(z)) - #endif -#else - #define __Pyx_CREAL(z) ((z).real) - #define __Pyx_CIMAG(z) ((z).imag) -#endif -#if defined(__cplusplus) && CYTHON_CCOMPLEX\ - && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) - #define __Pyx_SET_CREAL(z,x) ((z).real(x)) - #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) -#else - #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) - #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX - #define __Pyx_c_eq_float(a, b) ((a)==(b)) - #define __Pyx_c_sum_float(a, b) ((a)+(b)) - #define __Pyx_c_diff_float(a, b) ((a)-(b)) - #define __Pyx_c_prod_float(a, b) ((a)*(b)) - #define __Pyx_c_quot_float(a, b) ((a)/(b)) - #define __Pyx_c_neg_float(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_float(z) ((z)==(float)0) - #define __Pyx_c_conj_float(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_float(z) (::std::abs(z)) - #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_float(z) ((z)==0) - #define __Pyx_c_conj_float(z) (conjf(z)) - #if 1 - #define __Pyx_c_abs_float(z) (cabsf(z)) - #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); - #endif -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX - #define __Pyx_c_eq_double(a, b) ((a)==(b)) - #define __Pyx_c_sum_double(a, b) ((a)+(b)) - #define __Pyx_c_diff_double(a, b) ((a)-(b)) - #define __Pyx_c_prod_double(a, b) ((a)*(b)) - #define __Pyx_c_quot_double(a, b) ((a)/(b)) - #define __Pyx_c_neg_double(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_double(z) ((z)==(double)0) - #define __Pyx_c_conj_double(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (::std::abs(z)) - #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_double(z) ((z)==0) - #define __Pyx_c_conj_double(z) (conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (cabs(z)) - #define __Pyx_c_pow_double(a, b) (cpow(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); - #endif -#endif - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - - -/* Module declarations from 'cython' */ - -/* Module declarations from 'cpython.buffer' */ - -/* Module declarations from 'libc.string' */ - -/* Module declarations from 'libc.stdio' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.type' */ -static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; - -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - -/* Module declarations from 'cpython.mem' */ - -/* Module declarations from 'numpy' */ - -/* Module declarations from 'numpy' */ -static PyTypeObject *__pyx_ptype_5numpy_dtype = 0; -static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0; -static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0; -static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0; -static PyTypeObject *__pyx_ptype_5numpy_generic = 0; -static PyTypeObject *__pyx_ptype_5numpy_number = 0; -static PyTypeObject *__pyx_ptype_5numpy_integer = 0; -static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0; -static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0; -static PyTypeObject *__pyx_ptype_5numpy_inexact = 0; -static PyTypeObject *__pyx_ptype_5numpy_floating = 0; -static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0; -static PyTypeObject *__pyx_ptype_5numpy_flexible = 0; -static PyTypeObject *__pyx_ptype_5numpy_character = 0; -static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; - -/* Module declarations from 'libc.math' */ - -/* Module declarations from 'LAIProcess' */ -static PyTypeObject *__pyx_ptype_10LAIProcess___pyx_scope_struct__train_WMCmodel = 0; -static PyTypeObject *__pyx_ptype_10LAIProcess___pyx_scope_struct_1_test_WMCModel = 0; -static PyTypeObject *__pyx_ptype_10LAIProcess___pyx_scope_struct_2_processs_WMCModel = 0; -static PyArrayObject *__pyx_f_10LAIProcess_process_tiff(PyArrayObject *, PyArrayObject *, PyArrayObject *, PyArrayObject *, double, int __pyx_skip_dispatch); /*proto*/ -static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 }; -#define __Pyx_MODULE_NAME "LAIProcess" -extern int __pyx_module_is_main_LAIProcess; -int __pyx_module_is_main_LAIProcess = 0; - -/* Implementation of 'LAIProcess' */ -static PyObject *__pyx_builtin_ImportError; -static const char __pyx_k_A[] = "A"; -static const char __pyx_k_B[] = "B"; -static const char __pyx_k_C[] = "C"; -static const char __pyx_k_D[] = "D"; -static const char __pyx_k_M[] = "M"; -static const char __pyx_k_N[] = "N"; -static const char __pyx_k_X[] = "X"; -static const char __pyx_k_f[] = "f"; -static const char __pyx_k_h[] = "h"; -static const char __pyx_k_X0[] = "X0"; -static const char __pyx_k_np[] = "np"; -static const char __pyx_k_FVC[] = "FVC"; -static const char __pyx_k_cos[] = "cos"; -static const char __pyx_k_dpi[] = "dpi"; -static const char __pyx_k_eqs[] = "eqs"; -static const char __pyx_k_err[] = "err"; -static const char __pyx_k_exp[] = "exp"; -static const char __pyx_k_lai[] = "lai"; -static const char __pyx_k_nan[] = "nan"; -static const char __pyx_k_plt[] = "plt"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_show[] = "show"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_V_lai[] = "V_lai"; -static const char __pyx_k_err_f[] = "err_f"; -static const char __pyx_k_f_veg[] = "f_veg"; -static const char __pyx_k_mylog[] = "mylog"; -static const char __pyx_k_numpy[] = "numpy"; -static const char __pyx_k_sigma[] = "sigma"; -static const char __pyx_k_title[] = "title"; -static const char __pyx_k_x_arr[] = "x_arr"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_lai_X0[] = "lai_X0"; -static const char __pyx_k_logger[] = "logger"; -static const char __pyx_k_pyplot[] = "pyplot"; -static const char __pyx_k_random[] = "random"; -static const char __pyx_k_result[] = "result"; -static const char __pyx_k_err_lai[] = "err_lai"; -static const char __pyx_k_leastsq[] = "leastsq"; -static const char __pyx_k_logging[] = "logging"; -static const char __pyx_k_savefig[] = "savefig"; -static const char __pyx_k_scatter[] = "scatter"; -static const char __pyx_k_WMCModel[] = "WMCModel"; -static const char __pyx_k_inc_tiff[] = "inc_tiff"; -static const char __pyx_k_temp_err[] = "temp_err"; -static const char __pyx_k_csv_sigma[] = "csv_sigma"; -static const char __pyx_k_draw_flag[] = "draw_flag"; -static const char __pyx_k_exp_gamma[] = "exp_gamma"; -static const char __pyx_k_getLogger[] = "getLogger"; -static const char __pyx_k_inc_angle[] = "inc_angle"; -static const char __pyx_k_param_arr[] = "param_arr"; -static const char __pyx_k_params_X0[] = "params_X0"; -static const char __pyx_k_sigma_veg[] = "sigma_veg"; -static const char __pyx_k_LAIProcess[] = "LAIProcess"; -static const char __pyx_k_matplotlib[] = "matplotlib"; -static const char __pyx_k_sample_inc[] = "sample_inc"; -static const char __pyx_k_sample_lai[] = "sample_lai"; -static const char __pyx_k_sample_lat[] = "sample_lat"; -static const char __pyx_k_sample_lon[] = "sample_lon"; -static const char __pyx_k_sigma_soil[] = "sigma_soil"; -static const char __pyx_k_sigma_tiff[] = "sigma_tiff"; -static const char __pyx_k_soil_water[] = "soil_water"; -static const char __pyx_k_ImportError[] = "ImportError"; -static const char __pyx_k_sample_code[] = "sample_code"; -static const char __pyx_k_sample_soil[] = "sample_soil"; -static const char __pyx_k_sample_time[] = "sample_time"; -static const char __pyx_k_equation_err[] = "equation-err"; -static const char __pyx_k_sample_sigma[] = "sample_sigma"; -static const char __pyx_k_test_WMCModel[] = "test_WMCModel"; -static const char __pyx_k_LAIProcess_pyx[] = "LAIProcess.pyx"; -static const char __pyx_k_scipy_optimize[] = "scipy.optimize"; -static const char __pyx_k_train_WMCmodel[] = "train_WMCmodel"; -static const char __pyx_k_soil_water_tiff[] = "soil_water_tiff"; -static const char __pyx_k_processs_WMCModel[] = "processs_WMCModel"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_test_err_image_path[] = "test_err_image_path"; -static const char __pyx_k_train_err_image_path[] = "train_err_image_path"; -static const char __pyx_k_test_WMCModel_locals_f[] = "test_WMCModel..f"; -static const char __pyx_k_train_WMCmodel_locals_f[] = "train_WMCmodel..f"; -static const char __pyx_k_lai_water_inc_sigma_item[] = "lai_water_inc_sigma_item"; -static const char __pyx_k_lai_water_inc_sigma_list[] = "lai_water_inc_sigma_list"; -static const char __pyx_k_lai_waiter_inc_sigma_item[] = "lai_waiter_inc_sigma_item"; -static const char __pyx_k_lai_waiter_inc_sigma_list[] = "lai_waiter_inc_sigma_list"; -static const char __pyx_k_processs_WMCModel_locals_f[] = "processs_WMCModel..f"; -static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; -static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; -static PyObject *__pyx_n_s_A; -static PyObject *__pyx_n_s_B; -static PyObject *__pyx_n_s_C; -static PyObject *__pyx_n_s_D; -static PyObject *__pyx_n_s_FVC; -static PyObject *__pyx_n_s_ImportError; -static PyObject *__pyx_n_s_LAIProcess; -static PyObject *__pyx_kp_s_LAIProcess_pyx; -static PyObject *__pyx_n_s_M; -static PyObject *__pyx_n_s_N; -static PyObject *__pyx_n_s_V_lai; -static PyObject *__pyx_n_s_WMCModel; -static PyObject *__pyx_n_s_X; -static PyObject *__pyx_n_s_X0; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_cos; -static PyObject *__pyx_n_s_csv_sigma; -static PyObject *__pyx_n_s_dpi; -static PyObject *__pyx_n_s_draw_flag; -static PyObject *__pyx_n_s_eqs; -static PyObject *__pyx_kp_s_equation_err; -static PyObject *__pyx_n_s_err; -static PyObject *__pyx_n_s_err_f; -static PyObject *__pyx_n_s_err_lai; -static PyObject *__pyx_n_s_exp; -static PyObject *__pyx_n_s_exp_gamma; -static PyObject *__pyx_n_s_f; -static PyObject *__pyx_n_s_f_veg; -static PyObject *__pyx_n_s_getLogger; -static PyObject *__pyx_n_s_h; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_inc_angle; -static PyObject *__pyx_n_s_inc_tiff; -static PyObject *__pyx_n_s_lai; -static PyObject *__pyx_n_s_lai_X0; -static PyObject *__pyx_n_s_lai_waiter_inc_sigma_item; -static PyObject *__pyx_n_s_lai_waiter_inc_sigma_list; -static PyObject *__pyx_n_s_lai_water_inc_sigma_item; -static PyObject *__pyx_n_s_lai_water_inc_sigma_list; -static PyObject *__pyx_n_s_leastsq; -static PyObject *__pyx_n_s_logger; -static PyObject *__pyx_n_s_logging; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_matplotlib; -static PyObject *__pyx_n_s_mylog; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_nan; -static PyObject *__pyx_n_s_np; -static PyObject *__pyx_n_s_numpy; -static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to; -static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor; -static PyObject *__pyx_n_s_param_arr; -static PyObject *__pyx_n_s_params_X0; -static PyObject *__pyx_n_s_plt; -static PyObject *__pyx_n_s_processs_WMCModel; -static PyObject *__pyx_n_s_processs_WMCModel_locals_f; -static PyObject *__pyx_n_s_pyplot; -static PyObject *__pyx_n_s_random; -static PyObject *__pyx_n_s_result; -static PyObject *__pyx_n_s_sample_code; -static PyObject *__pyx_n_s_sample_inc; -static PyObject *__pyx_n_s_sample_lai; -static PyObject *__pyx_n_s_sample_lat; -static PyObject *__pyx_n_s_sample_lon; -static PyObject *__pyx_n_s_sample_sigma; -static PyObject *__pyx_n_s_sample_soil; -static PyObject *__pyx_n_s_sample_time; -static PyObject *__pyx_n_s_savefig; -static PyObject *__pyx_n_s_scatter; -static PyObject *__pyx_n_s_scipy_optimize; -static PyObject *__pyx_n_s_show; -static PyObject *__pyx_n_s_sigma; -static PyObject *__pyx_n_s_sigma_soil; -static PyObject *__pyx_n_s_sigma_tiff; -static PyObject *__pyx_n_s_sigma_veg; -static PyObject *__pyx_n_s_soil_water; -static PyObject *__pyx_n_s_soil_water_tiff; -static PyObject *__pyx_n_s_temp_err; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_test_WMCModel; -static PyObject *__pyx_n_s_test_WMCModel_locals_f; -static PyObject *__pyx_n_s_test_err_image_path; -static PyObject *__pyx_n_s_title; -static PyObject *__pyx_n_s_train_WMCmodel; -static PyObject *__pyx_n_s_train_WMCmodel_locals_f; -static PyObject *__pyx_n_s_train_err_image_path; -static PyObject *__pyx_n_s_x_arr; -static PyObject *__pyx_pf_10LAIProcess_WMCModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_param_arr, PyObject *__pyx_v_sample_lai, PyObject *__pyx_v_sample_soil, PyObject *__pyx_v_sample_inc, PyObject *__pyx_v_sample_sigma); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_14train_WMCmodel_f(PyObject *__pyx_self, PyObject *__pyx_v_X); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_2train_WMCmodel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lai_water_inc_sigma_list, PyObject *__pyx_v_params_X0, PyObject *__pyx_v_train_err_image_path, PyObject *__pyx_v_draw_flag); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_13test_WMCModel_f(PyObject *__pyx_self, PyObject *__pyx_v_X); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_4test_WMCModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lai_waiter_inc_sigma_list, PyObject *__pyx_v_param_arr, PyObject *__pyx_v_lai_X0, PyObject *__pyx_v_test_err_image_path, PyObject *__pyx_v_draw_flag); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_17processs_WMCModel_f(PyObject *__pyx_self, PyObject *__pyx_v_X); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_6processs_WMCModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_param_arr, PyObject *__pyx_v_lai_X0, PyObject *__pyx_v_sigma, PyObject *__pyx_v_inc_angle, PyObject *__pyx_v_soil_water); /* proto */ -static PyObject *__pyx_pf_10LAIProcess_8process_tiff(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_sigma_tiff, PyArrayObject *__pyx_v_inc_tiff, PyArrayObject *__pyx_v_soil_water_tiff, PyArrayObject *__pyx_v_param_arr, double __pyx_v_lai_X0); /* proto */ -static PyObject *__pyx_tp_new_10LAIProcess___pyx_scope_struct__train_WMCmodel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10LAIProcess___pyx_scope_struct_1_test_WMCModel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_tp_new_10LAIProcess___pyx_scope_struct_2_processs_WMCModel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ -static PyObject *__pyx_int_0; -static PyObject *__pyx_int_1; -static PyObject *__pyx_int_600; -static PyObject *__pyx_int_neg_2; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__3; -static PyObject *__pyx_tuple__5; -static PyObject *__pyx_tuple__7; -static PyObject *__pyx_tuple__8; -static PyObject *__pyx_tuple__9; -static PyObject *__pyx_tuple__10; -static PyObject *__pyx_tuple__12; -static PyObject *__pyx_tuple__14; -static PyObject *__pyx_tuple__16; -static PyObject *__pyx_codeobj__2; -static PyObject *__pyx_codeobj__4; -static PyObject *__pyx_codeobj__6; -static PyObject *__pyx_codeobj__11; -static PyObject *__pyx_codeobj__13; -static PyObject *__pyx_codeobj__15; -static PyObject *__pyx_codeobj__17; -/* Late includes */ - -/* "LAIProcess.pyx":15 - * - * - * def WMCModel(param_arr,sample_lai,sample_soil,sample_inc,sample_sigma): # <<<<<<<<<<<<<< - * """ WMC - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_1WMCModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_10LAIProcess_WMCModel[] = " WMC\346\250\241\345\236\213 \345\242\236\345\212\240 \345\275\222\344\270\200\345\214\226\346\244\215\350\242\253\346\214\207\346\225\260\n\n Args:\n param_arr (np.ndarray): \345\217\202\346\225\260\346\225\260\347\273\204\n sample_lai (double): \345\217\266\351\235\242\347\247\257\346\214\207\346\225\260\n sample_soil (double): \345\234\237\345\243\244\345\220\253\346\260\264\351\207\217\n sample_inc (double): \345\205\245\345\260\204\350\247\222\357\274\210\345\274\247\345\272\246\345\200\274\357\274\211\n sample_sigma (double): \345\220\216\345\220\221\346\225\243\345\260\204\347\263\273\346\225\260\357\274\210\347\272\277\346\200\247\345\200\274\357\274\211\n\n Returns:\n double: \346\226\271\347\250\213\345\200\274\n "; -static PyMethodDef __pyx_mdef_10LAIProcess_1WMCModel = {"WMCModel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_1WMCModel, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10LAIProcess_WMCModel}; -static PyObject *__pyx_pw_10LAIProcess_1WMCModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_param_arr = 0; - PyObject *__pyx_v_sample_lai = 0; - PyObject *__pyx_v_sample_soil = 0; - PyObject *__pyx_v_sample_inc = 0; - PyObject *__pyx_v_sample_sigma = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("WMCModel (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_arr,&__pyx_n_s_sample_lai,&__pyx_n_s_sample_soil,&__pyx_n_s_sample_inc,&__pyx_n_s_sample_sigma,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_arr)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sample_lai)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("WMCModel", 1, 5, 5, 1); __PYX_ERR(0, 15, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sample_soil)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("WMCModel", 1, 5, 5, 2); __PYX_ERR(0, 15, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sample_inc)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("WMCModel", 1, 5, 5, 3); __PYX_ERR(0, 15, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sample_sigma)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("WMCModel", 1, 5, 5, 4); __PYX_ERR(0, 15, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "WMCModel") < 0)) __PYX_ERR(0, 15, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_param_arr = values[0]; - __pyx_v_sample_lai = values[1]; - __pyx_v_sample_soil = values[2]; - __pyx_v_sample_inc = values[3]; - __pyx_v_sample_sigma = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("WMCModel", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 15, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.WMCModel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_WMCModel(__pyx_self, __pyx_v_param_arr, __pyx_v_sample_lai, __pyx_v_sample_soil, __pyx_v_sample_inc, __pyx_v_sample_sigma); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_10LAIProcess_WMCModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_param_arr, PyObject *__pyx_v_sample_lai, PyObject *__pyx_v_sample_soil, PyObject *__pyx_v_sample_inc, PyObject *__pyx_v_sample_sigma) { - PyObject *__pyx_v_A = NULL; - PyObject *__pyx_v_B = NULL; - PyObject *__pyx_v_C = NULL; - PyObject *__pyx_v_D = NULL; - PyObject *__pyx_v_M = NULL; - PyObject *__pyx_v_N = NULL; - PyObject *__pyx_v_V_lai = NULL; - PyObject *__pyx_v_exp_gamma = NULL; - PyObject *__pyx_v_sigma_soil = NULL; - PyObject *__pyx_v_sigma_veg = NULL; - CYTHON_UNUSED long __pyx_v_f_veg; - PyObject *__pyx_v_result = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *(*__pyx_t_8)(PyObject *); - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("WMCModel", 0); - - /* "LAIProcess.pyx":29 - * """ - * # - * A,B,C,D,M,N=param_arr # # <<<<<<<<<<<<<< - * V_lai=sample_lai - * #V_lai=E*sample_lai+F - */ - if ((likely(PyTuple_CheckExact(__pyx_v_param_arr))) || (PyList_CheckExact(__pyx_v_param_arr))) { - PyObject* sequence = __pyx_v_param_arr; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 6)) { - if (size > 6) __Pyx_RaiseTooManyValuesError(6); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 29, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); - __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3); - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 4); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 5); - } else { - __pyx_t_1 = PyList_GET_ITEM(sequence, 0); - __pyx_t_2 = PyList_GET_ITEM(sequence, 1); - __pyx_t_3 = PyList_GET_ITEM(sequence, 2); - __pyx_t_4 = PyList_GET_ITEM(sequence, 3); - __pyx_t_5 = PyList_GET_ITEM(sequence, 4); - __pyx_t_6 = PyList_GET_ITEM(sequence, 5); - } - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - #else - { - Py_ssize_t i; - PyObject** temps[6] = {&__pyx_t_1,&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5,&__pyx_t_6}; - for (i=0; i < 6; i++) { - PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(item); - *(temps[i]) = item; - } - } - #endif - } else { - Py_ssize_t index = -1; - PyObject** temps[6] = {&__pyx_t_1,&__pyx_t_2,&__pyx_t_3,&__pyx_t_4,&__pyx_t_5,&__pyx_t_6}; - __pyx_t_7 = PyObject_GetIter(__pyx_v_param_arr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 29, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; - for (index=0; index < 6; index++) { - PyObject* item = __pyx_t_8(__pyx_t_7); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; - __Pyx_GOTREF(item); - *(temps[index]) = item; - } - if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 6) < 0) __PYX_ERR(0, 29, __pyx_L1_error) - __pyx_t_8 = NULL; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - goto __pyx_L4_unpacking_done; - __pyx_L3_unpacking_failed:; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_8 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 29, __pyx_L1_error) - __pyx_L4_unpacking_done:; - } - __pyx_v_A = __pyx_t_1; - __pyx_t_1 = 0; - __pyx_v_B = __pyx_t_2; - __pyx_t_2 = 0; - __pyx_v_C = __pyx_t_3; - __pyx_t_3 = 0; - __pyx_v_D = __pyx_t_4; - __pyx_t_4 = 0; - __pyx_v_M = __pyx_t_5; - __pyx_t_5 = 0; - __pyx_v_N = __pyx_t_6; - __pyx_t_6 = 0; - - /* "LAIProcess.pyx":30 - * # - * A,B,C,D,M,N=param_arr # - * V_lai=sample_lai # <<<<<<<<<<<<<< - * #V_lai=E*sample_lai+F - * exp_gamma=np.exp(-2*B*((V_lai*D+C))*(1/np.cos(sample_inc))) - */ - __Pyx_INCREF(__pyx_v_sample_lai); - __pyx_v_V_lai = __pyx_v_sample_lai; - - /* "LAIProcess.pyx":32 - * V_lai=sample_lai - * #V_lai=E*sample_lai+F - * exp_gamma=np.exp(-2*B*((V_lai*D+C))*(1/np.cos(sample_inc))) # <<<<<<<<<<<<<< - * sigma_soil=M*sample_soil+N - * sigma_veg=A*((V_lai))*np.cos(sample_inc) - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyNumber_Multiply(__pyx_int_neg_2, __pyx_v_B); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_3 = PyNumber_Multiply(__pyx_v_V_lai, __pyx_v_D); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_v_C); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_v_sample_inc) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_sample_inc); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_int_1, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_4, function); - } - } - __pyx_t_6 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 32, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_exp_gamma = __pyx_t_6; - __pyx_t_6 = 0; - - /* "LAIProcess.pyx":33 - * #V_lai=E*sample_lai+F - * exp_gamma=np.exp(-2*B*((V_lai*D+C))*(1/np.cos(sample_inc))) - * sigma_soil=M*sample_soil+N # <<<<<<<<<<<<<< - * sigma_veg=A*((V_lai))*np.cos(sample_inc) - * f_veg=1 - */ - __pyx_t_6 = PyNumber_Multiply(__pyx_v_M, __pyx_v_sample_soil); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_4 = PyNumber_Add(__pyx_t_6, __pyx_v_N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_sigma_soil = __pyx_t_4; - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":34 - * exp_gamma=np.exp(-2*B*((V_lai*D+C))*(1/np.cos(sample_inc))) - * sigma_soil=M*sample_soil+N - * sigma_veg=A*((V_lai))*np.cos(sample_inc) # <<<<<<<<<<<<<< - * f_veg=1 - * result=sigma_veg*(1-exp_gamma)+sigma_soil*exp_gamma-sample_sigma - */ - __pyx_t_4 = PyNumber_Multiply(__pyx_v_A, __pyx_v_V_lai); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - __pyx_t_6 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_sample_inc) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_sample_inc); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_v_sigma_veg = __pyx_t_1; - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":35 - * sigma_soil=M*sample_soil+N - * sigma_veg=A*((V_lai))*np.cos(sample_inc) - * f_veg=1 # <<<<<<<<<<<<<< - * result=sigma_veg*(1-exp_gamma)+sigma_soil*exp_gamma-sample_sigma - * return result - */ - __pyx_v_f_veg = 1; - - /* "LAIProcess.pyx":36 - * sigma_veg=A*((V_lai))*np.cos(sample_inc) - * f_veg=1 - * result=sigma_veg*(1-exp_gamma)+sigma_soil*exp_gamma-sample_sigma # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_t_1 = __Pyx_PyInt_SubtractCObj(__pyx_int_1, __pyx_v_exp_gamma, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = PyNumber_Multiply(__pyx_v_sigma_veg, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Multiply(__pyx_v_sigma_soil, __pyx_v_exp_gamma); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Subtract(__pyx_t_4, __pyx_v_sample_sigma); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 36, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_v_result = __pyx_t_1; - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":37 - * f_veg=1 - * result=sigma_veg*(1-exp_gamma)+sigma_soil*exp_gamma-sample_sigma - * return result # <<<<<<<<<<<<<< - * - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_result); - __pyx_r = __pyx_v_result; - goto __pyx_L0; - - /* "LAIProcess.pyx":15 - * - * - * def WMCModel(param_arr,sample_lai,sample_soil,sample_inc,sample_sigma): # <<<<<<<<<<<<<< - * """ WMC - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("LAIProcess.WMCModel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_A); - __Pyx_XDECREF(__pyx_v_B); - __Pyx_XDECREF(__pyx_v_C); - __Pyx_XDECREF(__pyx_v_D); - __Pyx_XDECREF(__pyx_v_M); - __Pyx_XDECREF(__pyx_v_N); - __Pyx_XDECREF(__pyx_v_V_lai); - __Pyx_XDECREF(__pyx_v_exp_gamma); - __Pyx_XDECREF(__pyx_v_sigma_soil); - __Pyx_XDECREF(__pyx_v_sigma_veg); - __Pyx_XDECREF(__pyx_v_result); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":42 - * - * - * def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_3train_WMCmodel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_10LAIProcess_2train_WMCmodel[] = " \350\256\255\347\273\203\346\250\241\345\236\213\345\217\202\346\225\260\n\n Args:\n lai_waiter_inc_sigma_list (list): \350\256\255\347\273\203\346\250\241\345\236\213\344\275\277\347\224\250\347\232\204\346\240\267\346\234\254\345\221\242\n "; -static PyMethodDef __pyx_mdef_10LAIProcess_3train_WMCmodel = {"train_WMCmodel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_3train_WMCmodel, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10LAIProcess_2train_WMCmodel}; -static PyObject *__pyx_pw_10LAIProcess_3train_WMCmodel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_lai_water_inc_sigma_list = 0; - PyObject *__pyx_v_params_X0 = 0; - PyObject *__pyx_v_train_err_image_path = 0; - PyObject *__pyx_v_draw_flag = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("train_WMCmodel (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lai_water_inc_sigma_list,&__pyx_n_s_params_X0,&__pyx_n_s_train_err_image_path,&__pyx_n_s_draw_flag,0}; - PyObject* values[4] = {0,0,0,0}; - values[3] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lai_water_inc_sigma_list)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params_X0)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("train_WMCmodel", 0, 3, 4, 1); __PYX_ERR(0, 42, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_train_err_image_path)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("train_WMCmodel", 0, 3, 4, 2); __PYX_ERR(0, 42, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_draw_flag); - if (value) { values[3] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "train_WMCmodel") < 0)) __PYX_ERR(0, 42, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_lai_water_inc_sigma_list = values[0]; - __pyx_v_params_X0 = values[1]; - __pyx_v_train_err_image_path = values[2]; - __pyx_v_draw_flag = values[3]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("train_WMCmodel", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 42, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.train_WMCmodel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_2train_WMCmodel(__pyx_self, __pyx_v_lai_water_inc_sigma_list, __pyx_v_params_X0, __pyx_v_train_err_image_path, __pyx_v_draw_flag); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":48 - * lai_waiter_inc_sigma_list (list): - * """ - * def f(X): # <<<<<<<<<<<<<< - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_14train_WMCmodel_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_10LAIProcess_14train_WMCmodel_1f = {"f", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_14train_WMCmodel_1f, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10LAIProcess_14train_WMCmodel_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_X = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("f (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_X,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_X)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "f") < 0)) __PYX_ERR(0, 48, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_X = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("f", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 48, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.train_WMCmodel.f", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_14train_WMCmodel_f(__pyx_self, __pyx_v_X); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_10LAIProcess_14train_WMCmodel_f(PyObject *__pyx_self, PyObject *__pyx_v_X) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *__pyx_cur_scope; - struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *__pyx_outer_scope; - PyObject *__pyx_v_eqs = NULL; - PyObject *__pyx_v_lai_water_inc_sigma_item = NULL; - PyObject *__pyx_v_sample_lai = NULL; - PyObject *__pyx_v_sample_sigma = NULL; - PyObject *__pyx_v_sample_soil = NULL; - PyObject *__pyx_v_sample_inc = NULL; - CYTHON_UNUSED PyObject *__pyx_v_FVC = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *(*__pyx_t_3)(PyObject *); - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - int __pyx_t_9; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("f", 0); - __pyx_outer_scope = (struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *) __Pyx_CyFunction_GetClosure(__pyx_self); - __pyx_cur_scope = __pyx_outer_scope; - - /* "LAIProcess.pyx":49 - * """ - * def f(X): - * eqs=[] # <<<<<<<<<<<<<< - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - * sample_lai=lai_water_inc_sigma_item[4] - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_eqs = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":50 - * def f(X): - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: # <<<<<<<<<<<<<< - * sample_lai=lai_water_inc_sigma_item[4] - * sample_sigma=lai_water_inc_sigma_item[5] # 5: csv_sigma, 8:tiff_sigma - */ - if (unlikely(!__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list)) { __Pyx_RaiseClosureNameError("lai_water_inc_sigma_list"); __PYX_ERR(0, 50, __pyx_L1_error) } - if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list)) { - __pyx_t_1 = __pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; - __pyx_t_3 = NULL; - } else { - __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 50, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_3)) { - if (likely(PyList_CheckExact(__pyx_t_1))) { - if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 50, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } else { - if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 50, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } - } else { - __pyx_t_4 = __pyx_t_3(__pyx_t_1); - if (unlikely(!__pyx_t_4)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 50, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_4); - } - __Pyx_XDECREF_SET(__pyx_v_lai_water_inc_sigma_item, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":51 - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - * sample_lai=lai_water_inc_sigma_item[4] # <<<<<<<<<<<<<< - * sample_sigma=lai_water_inc_sigma_item[5] # 5: csv_sigma, 8:tiff_sigma - * sample_soil=lai_water_inc_sigma_item[6] - */ - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_lai_water_inc_sigma_item, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 51, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_sample_lai, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":52 - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - * sample_lai=lai_water_inc_sigma_item[4] - * sample_sigma=lai_water_inc_sigma_item[5] # 5: csv_sigma, 8:tiff_sigma # <<<<<<<<<<<<<< - * sample_soil=lai_water_inc_sigma_item[6] - * sample_inc=lai_water_inc_sigma_item[7] - */ - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_lai_water_inc_sigma_item, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_sample_sigma, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":53 - * sample_lai=lai_water_inc_sigma_item[4] - * sample_sigma=lai_water_inc_sigma_item[5] # 5: csv_sigma, 8:tiff_sigma - * sample_soil=lai_water_inc_sigma_item[6] # <<<<<<<<<<<<<< - * sample_inc=lai_water_inc_sigma_item[7] - * FVC=lai_water_inc_sigma_item[8] - */ - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_lai_water_inc_sigma_item, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 53, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_sample_soil, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":54 - * sample_sigma=lai_water_inc_sigma_item[5] # 5: csv_sigma, 8:tiff_sigma - * sample_soil=lai_water_inc_sigma_item[6] - * sample_inc=lai_water_inc_sigma_item[7] # <<<<<<<<<<<<<< - * FVC=lai_water_inc_sigma_item[8] - * eqs.append(WMCModel(X,sample_lai,sample_soil,sample_inc,sample_sigma)) - */ - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_lai_water_inc_sigma_item, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_sample_inc, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":55 - * sample_soil=lai_water_inc_sigma_item[6] - * sample_inc=lai_water_inc_sigma_item[7] - * FVC=lai_water_inc_sigma_item[8] # <<<<<<<<<<<<<< - * eqs.append(WMCModel(X,sample_lai,sample_soil,sample_inc,sample_sigma)) - * return eqs - */ - __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_lai_water_inc_sigma_item, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_XDECREF_SET(__pyx_v_FVC, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":56 - * sample_inc=lai_water_inc_sigma_item[7] - * FVC=lai_water_inc_sigma_item[8] - * eqs.append(WMCModel(X,sample_lai,sample_soil,sample_inc,sample_sigma)) # <<<<<<<<<<<<<< - * return eqs - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_WMCModel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { - __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); - if (likely(__pyx_t_6)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_5, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[6] = {__pyx_t_6, __pyx_v_X, __pyx_v_sample_lai, __pyx_v_sample_soil, __pyx_v_sample_inc, __pyx_v_sample_sigma}; - __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { - PyObject *__pyx_temp[6] = {__pyx_t_6, __pyx_v_X, __pyx_v_sample_lai, __pyx_v_sample_soil, __pyx_v_sample_inc, __pyx_v_sample_sigma}; - __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_GOTREF(__pyx_t_4); - } else - #endif - { - __pyx_t_8 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_6) { - __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; - } - __Pyx_INCREF(__pyx_v_X); - __Pyx_GIVEREF(__pyx_v_X); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_X); - __Pyx_INCREF(__pyx_v_sample_lai); - __Pyx_GIVEREF(__pyx_v_sample_lai); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_sample_lai); - __Pyx_INCREF(__pyx_v_sample_soil); - __Pyx_GIVEREF(__pyx_v_sample_soil); - PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_sample_soil); - __Pyx_INCREF(__pyx_v_sample_inc); - __Pyx_GIVEREF(__pyx_v_sample_inc); - PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_v_sample_inc); - __Pyx_INCREF(__pyx_v_sample_sigma); - __Pyx_GIVEREF(__pyx_v_sample_sigma); - PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_7, __pyx_v_sample_sigma); - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_9 = __Pyx_PyList_Append(__pyx_v_eqs, __pyx_t_4); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - - /* "LAIProcess.pyx":50 - * def f(X): - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: # <<<<<<<<<<<<<< - * sample_lai=lai_water_inc_sigma_item[4] - * sample_sigma=lai_water_inc_sigma_item[5] # 5: csv_sigma, 8:tiff_sigma - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "LAIProcess.pyx":57 - * FVC=lai_water_inc_sigma_item[8] - * eqs.append(WMCModel(X,sample_lai,sample_soil,sample_inc,sample_sigma)) - * return eqs # <<<<<<<<<<<<<< - * - * X0 = params_X0 # - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_eqs); - __pyx_r = __pyx_v_eqs; - goto __pyx_L0; - - /* "LAIProcess.pyx":48 - * lai_waiter_inc_sigma_list (list): - * """ - * def f(X): # <<<<<<<<<<<<<< - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("LAIProcess.train_WMCmodel.f", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_eqs); - __Pyx_XDECREF(__pyx_v_lai_water_inc_sigma_item); - __Pyx_XDECREF(__pyx_v_sample_lai); - __Pyx_XDECREF(__pyx_v_sample_sigma); - __Pyx_XDECREF(__pyx_v_sample_soil); - __Pyx_XDECREF(__pyx_v_sample_inc); - __Pyx_XDECREF(__pyx_v_FVC); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":42 - * - * - * def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - -static PyObject *__pyx_pf_10LAIProcess_2train_WMCmodel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lai_water_inc_sigma_list, PyObject *__pyx_v_params_X0, PyObject *__pyx_v_train_err_image_path, PyObject *__pyx_v_draw_flag) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *__pyx_cur_scope; - PyObject *__pyx_v_f = 0; - PyObject *__pyx_v_X0 = NULL; - PyObject *__pyx_v_h = NULL; - PyObject *__pyx_v_err_f = NULL; - PyObject *__pyx_v_x_arr = NULL; - PyObject *__pyx_v_plt = NULL; - PyObject *__pyx_v_lai_waiter_inc_sigma_item = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - Py_ssize_t __pyx_t_6; - PyObject *(*__pyx_t_7)(PyObject *); - int __pyx_t_8; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("train_WMCmodel", 0); - __pyx_cur_scope = (struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *)__pyx_tp_new_10LAIProcess___pyx_scope_struct__train_WMCmodel(__pyx_ptype_10LAIProcess___pyx_scope_struct__train_WMCmodel, __pyx_empty_tuple, NULL); - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *)Py_None); - __Pyx_INCREF(Py_None); - __PYX_ERR(0, 42, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } - __pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list = __pyx_v_lai_water_inc_sigma_list; - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list); - - /* "LAIProcess.pyx":48 - * lai_waiter_inc_sigma_list (list): - * """ - * def f(X): # <<<<<<<<<<<<<< - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - */ - __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_10LAIProcess_14train_WMCmodel_1f, 0, __pyx_n_s_train_WMCmodel_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_LAIProcess, __pyx_d, ((PyObject *)__pyx_codeobj__2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_f = __pyx_t_1; - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":59 - * return eqs - * - * X0 = params_X0 # # <<<<<<<<<<<<<< - * # logger.info(str(X0)) - * h = leastsq(f, X0) - */ - __Pyx_INCREF(__pyx_v_params_X0); - __pyx_v_X0 = __pyx_v_params_X0; - - /* "LAIProcess.pyx":61 - * X0 = params_X0 # - * # logger.info(str(X0)) - * h = leastsq(f, X0) # <<<<<<<<<<<<<< - * # logger.info(h[0],h[1]) - * err_f=f(h[0]) - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_leastsq); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_f, __pyx_v_X0}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_f, __pyx_v_X0}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_v_f); - __Pyx_GIVEREF(__pyx_v_f); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_f); - __Pyx_INCREF(__pyx_v_X0); - __Pyx_GIVEREF(__pyx_v_X0); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_X0); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 61, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_h = __pyx_t_1; - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":63 - * h = leastsq(f, X0) - * # logger.info(h[0],h[1]) - * err_f=f(h[0]) # <<<<<<<<<<<<<< - * x_arr=[lai_waiter_inc_sigma_item[4] for lai_waiter_inc_sigma_item in lai_water_inc_sigma_list] - * # - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_h, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __pyx_pf_10LAIProcess_14train_WMCmodel_f(__pyx_v_f, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_err_f = __pyx_t_2; - __pyx_t_2 = 0; - - /* "LAIProcess.pyx":64 - * # logger.info(h[0],h[1]) - * err_f=f(h[0]) - * x_arr=[lai_waiter_inc_sigma_item[4] for lai_waiter_inc_sigma_item in lai_water_inc_sigma_list] # <<<<<<<<<<<<<< - * # - * # logger.info("\n\n{}\n\t\t ".format(str(np.array(err_f).shape))) - */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list)) { - __pyx_t_1 = __pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0; - __pyx_t_7 = NULL; - } else { - __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_lai_water_inc_sigma_list); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 64, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_7)) { - if (likely(PyList_CheckExact(__pyx_t_1))) { - if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 64, __pyx_L1_error) - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } else { - if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 64, __pyx_L1_error) - #else - __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - #endif - } - } else { - __pyx_t_5 = __pyx_t_7(__pyx_t_1); - if (unlikely(!__pyx_t_5)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 64, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_5); - } - __Pyx_XDECREF_SET(__pyx_v_lai_waiter_inc_sigma_item, __pyx_t_5); - __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_lai_waiter_inc_sigma_item, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_x_arr = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "LAIProcess.pyx":71 - * # logger.info("\n\n") - * - * if draw_flag: # <<<<<<<<<<<<<< - * # logger.info(err_f) - * # logger.info(np.where(np.abs(err_f)<10)) - */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_draw_flag); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 71, __pyx_L1_error) - if (__pyx_t_8) { - - /* "LAIProcess.pyx":74 - * # logger.info(err_f) - * # logger.info(np.where(np.abs(err_f)<10)) - * from matplotlib import pyplot as plt # <<<<<<<<<<<<<< - * plt.scatter(x_arr,err_f) - * plt.title("equation-err") - */ - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_n_s_pyplot); - __Pyx_GIVEREF(__pyx_n_s_pyplot); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_pyplot); - __pyx_t_1 = __Pyx_Import(__pyx_n_s_matplotlib, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_pyplot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_t_2); - __pyx_v_plt = __pyx_t_2; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "LAIProcess.pyx":75 - * # logger.info(np.where(np.abs(err_f)<10)) - * from matplotlib import pyplot as plt - * plt.scatter(x_arr,err_f) # <<<<<<<<<<<<<< - * plt.title("equation-err") - * plt.savefig(train_err_image_path,dpi=600) - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_scatter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_5 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x_arr, __pyx_v_err_f}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x_arr, __pyx_v_err_f}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(__pyx_v_x_arr); - __Pyx_GIVEREF(__pyx_v_x_arr); - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_x_arr); - __Pyx_INCREF(__pyx_v_err_f); - __Pyx_GIVEREF(__pyx_v_err_f); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_err_f); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "LAIProcess.pyx":76 - * from matplotlib import pyplot as plt - * plt.scatter(x_arr,err_f) - * plt.title("equation-err") # <<<<<<<<<<<<<< - * plt.savefig(train_err_image_path,dpi=600) - * plt.show() - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_title); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_equation_err) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_equation_err); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "LAIProcess.pyx":77 - * plt.scatter(x_arr,err_f) - * plt.title("equation-err") - * plt.savefig(train_err_image_path,dpi=600) # <<<<<<<<<<<<<< - * plt.show() - * - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_savefig); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_INCREF(__pyx_v_train_err_image_path); - __Pyx_GIVEREF(__pyx_v_train_err_image_path); - PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_train_err_image_path); - __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dpi, __pyx_int_600) < 0) __PYX_ERR(0, 77, __pyx_L1_error) - __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "LAIProcess.pyx":78 - * plt.title("equation-err") - * plt.savefig(train_err_image_path,dpi=600) - * plt.show() # <<<<<<<<<<<<<< - * - * return h[0] - */ - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_show); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - - /* "LAIProcess.pyx":71 - * # logger.info("\n\n") - * - * if draw_flag: # <<<<<<<<<<<<<< - * # logger.info(err_f) - * # logger.info(np.where(np.abs(err_f)<10)) - */ - } - - /* "LAIProcess.pyx":80 - * plt.show() - * - * return h[0] # <<<<<<<<<<<<<< - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_h, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; - goto __pyx_L0; - - /* "LAIProcess.pyx":42 - * - * - * def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("LAIProcess.train_WMCmodel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_f); - __Pyx_XDECREF(__pyx_v_X0); - __Pyx_XDECREF(__pyx_v_h); - __Pyx_XDECREF(__pyx_v_err_f); - __Pyx_XDECREF(__pyx_v_x_arr); - __Pyx_XDECREF(__pyx_v_plt); - __Pyx_XDECREF(__pyx_v_lai_waiter_inc_sigma_item); - __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":82 - * return h[0] - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_5test_WMCModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_10LAIProcess_4test_WMCModel[] = " \346\265\213\350\257\225\346\250\241\345\236\213\350\256\255\347\273\203\347\273\223\346\236\234\n\n Args:\n lai_waiter_inc_sigma_list (list): \346\265\213\350\257\225\344\275\277\347\224\250\347\232\204\346\240\267\346\234\254\351\233\206\n A (_type_): \345\217\202\346\225\260A\n B (_type_): \345\217\202\346\225\260B\n C (_type_): \345\217\202\346\225\260C\n D (_type_): \345\217\202\346\225\260D\n M (_type_): \345\217\202\346\225\260M\n N (_type_): \345\217\202\346\225\260N\n lai_X0 (_type_): \345\210\235\345\247\213\345\200\274\n\n Returns:\n list: \350\257\257\345\267\256\345\210\227\350\241\250 [sample_lai,err,predict]\n "; -static PyMethodDef __pyx_mdef_10LAIProcess_5test_WMCModel = {"test_WMCModel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_5test_WMCModel, METH_VARARGS|METH_KEYWORDS, __pyx_doc_10LAIProcess_4test_WMCModel}; -static PyObject *__pyx_pw_10LAIProcess_5test_WMCModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_lai_waiter_inc_sigma_list = 0; - PyObject *__pyx_v_param_arr = 0; - PyObject *__pyx_v_lai_X0 = 0; - PyObject *__pyx_v_test_err_image_path = 0; - PyObject *__pyx_v_draw_flag = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("test_WMCModel (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lai_waiter_inc_sigma_list,&__pyx_n_s_param_arr,&__pyx_n_s_lai_X0,&__pyx_n_s_test_err_image_path,&__pyx_n_s_draw_flag,0}; - PyObject* values[5] = {0,0,0,0,0}; - values[4] = ((PyObject *)Py_True); - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lai_waiter_inc_sigma_list)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_arr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("test_WMCModel", 0, 4, 5, 1); __PYX_ERR(0, 82, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lai_X0)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("test_WMCModel", 0, 4, 5, 2); __PYX_ERR(0, 82, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_test_err_image_path)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("test_WMCModel", 0, 4, 5, 3); __PYX_ERR(0, 82, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (kw_args > 0) { - PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_draw_flag); - if (value) { values[4] = value; kw_args--; } - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "test_WMCModel") < 0)) __PYX_ERR(0, 82, __pyx_L3_error) - } - } else { - switch (PyTuple_GET_SIZE(__pyx_args)) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - break; - default: goto __pyx_L5_argtuple_error; - } - } - __pyx_v_lai_waiter_inc_sigma_list = values[0]; - __pyx_v_param_arr = values[1]; - __pyx_v_lai_X0 = values[2]; - __pyx_v_test_err_image_path = values[3]; - __pyx_v_draw_flag = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("test_WMCModel", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.test_WMCModel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_4test_WMCModel(__pyx_self, __pyx_v_lai_waiter_inc_sigma_list, __pyx_v_param_arr, __pyx_v_lai_X0, __pyx_v_test_err_image_path, __pyx_v_draw_flag); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":104 - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_13test_WMCModel_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_10LAIProcess_13test_WMCModel_1f = {"f", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_13test_WMCModel_1f, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10LAIProcess_13test_WMCModel_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_X = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("f (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_X,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_X)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "f") < 0)) __PYX_ERR(0, 104, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_X = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("f", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 104, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.test_WMCModel.f", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_13test_WMCModel_f(__pyx_self, __pyx_v_X); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_10LAIProcess_13test_WMCModel_f(PyObject *__pyx_self, PyObject *__pyx_v_X) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *__pyx_cur_scope; - struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *__pyx_outer_scope; - PyObject *__pyx_v_lai = NULL; - PyObject *__pyx_v_eqs = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("f", 0); - __pyx_outer_scope = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *) __Pyx_CyFunction_GetClosure(__pyx_self); - __pyx_cur_scope = __pyx_outer_scope; - - /* "LAIProcess.pyx":105 - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): - * lai=X[0] # <<<<<<<<<<<<<< - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - * return eqs - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_X, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_lai = __pyx_t_1; - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":106 - * def f(X): - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] # <<<<<<<<<<<<<< - * return eqs - * X0=lai_X0 - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_WMCModel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(!__pyx_cur_scope->__pyx_v_param_arr)) { __Pyx_RaiseClosureNameError("param_arr"); __PYX_ERR(0, 106, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_v_sample_soil)) { __Pyx_RaiseClosureNameError("sample_soil"); __PYX_ERR(0, 106, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_v_sample_inc)) { __Pyx_RaiseClosureNameError("sample_inc"); __PYX_ERR(0, 106, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_v_csv_sigma)) { __Pyx_RaiseClosureNameError("csv_sigma"); __PYX_ERR(0, 106, __pyx_L1_error) } - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_arr, __pyx_v_lai, __pyx_cur_scope->__pyx_v_sample_soil, __pyx_cur_scope->__pyx_v_sample_inc, __pyx_cur_scope->__pyx_v_csv_sigma}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_arr, __pyx_v_lai, __pyx_cur_scope->__pyx_v_sample_soil, __pyx_cur_scope->__pyx_v_sample_inc, __pyx_cur_scope->__pyx_v_csv_sigma}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_arr); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_arr); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_arr); - __Pyx_INCREF(__pyx_v_lai); - __Pyx_GIVEREF(__pyx_v_lai); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_lai); - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sample_soil); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sample_soil); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_sample_soil); - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sample_inc); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sample_inc); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_sample_inc); - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_csv_sigma); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_csv_sigma); - PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_cur_scope->__pyx_v_csv_sigma); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_v_eqs = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "LAIProcess.pyx":107 - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - * return eqs # <<<<<<<<<<<<<< - * X0=lai_X0 - * h = leastsq(f, X0) - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_eqs); - __pyx_r = __pyx_v_eqs; - goto __pyx_L0; - - /* "LAIProcess.pyx":104 - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("LAIProcess.test_WMCModel.f", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_lai); - __Pyx_XDECREF(__pyx_v_eqs); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":82 - * return h[0] - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - -static PyObject *__pyx_pf_10LAIProcess_4test_WMCModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_lai_waiter_inc_sigma_list, PyObject *__pyx_v_param_arr, PyObject *__pyx_v_lai_X0, PyObject *__pyx_v_test_err_image_path, PyObject *__pyx_v_draw_flag) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *__pyx_cur_scope; - PyObject *__pyx_v_err = NULL; - PyObject *__pyx_v_err_f = NULL; - PyObject *__pyx_v_x_arr = NULL; - PyObject *__pyx_v_err_lai = NULL; - PyObject *__pyx_v_lai_waiter_inc_sigma_item = NULL; - CYTHON_UNUSED PyObject *__pyx_v_sample_time = NULL; - PyObject *__pyx_v_sample_code = NULL; - CYTHON_UNUSED PyObject *__pyx_v_sample_lon = NULL; - CYTHON_UNUSED PyObject *__pyx_v_sample_lat = NULL; - PyObject *__pyx_v_sample_lai = NULL; - CYTHON_UNUSED PyObject *__pyx_v_sample_sigma = NULL; - PyObject *__pyx_v_f = 0; - PyObject *__pyx_v_X0 = NULL; - PyObject *__pyx_v_h = NULL; - PyObject *__pyx_v_temp_err = NULL; - PyObject *__pyx_v_plt = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - Py_ssize_t __pyx_t_2; - PyObject *(*__pyx_t_3)(PyObject *); - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *(*__pyx_t_14)(PyObject *); - int __pyx_t_15; - int __pyx_t_16; - int __pyx_t_17; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("test_WMCModel", 0); - __pyx_cur_scope = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *)__pyx_tp_new_10LAIProcess___pyx_scope_struct_1_test_WMCModel(__pyx_ptype_10LAIProcess___pyx_scope_struct_1_test_WMCModel, __pyx_empty_tuple, NULL); - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *)Py_None); - __Pyx_INCREF(Py_None); - __PYX_ERR(0, 82, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } - __pyx_cur_scope->__pyx_v_param_arr = __pyx_v_param_arr; - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_arr); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_arr); - - /* "LAIProcess.pyx":98 - * list: [sample_lai,err,predict] - * """ - * err=[] # <<<<<<<<<<<<<< - * err_f=[] - * x_arr=[] - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_err = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":99 - * """ - * err=[] - * err_f=[] # <<<<<<<<<<<<<< - * x_arr=[] - * err_lai=[] - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_err_f = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":100 - * err=[] - * err_f=[] - * x_arr=[] # <<<<<<<<<<<<<< - * err_lai=[] - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_x_arr = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":101 - * err_f=[] - * x_arr=[] - * err_lai=[] # <<<<<<<<<<<<<< - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_err_lai = ((PyObject*)__pyx_t_1); - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":102 - * x_arr=[] - * err_lai=[] - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: # <<<<<<<<<<<<<< - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): - */ - if (likely(PyList_CheckExact(__pyx_v_lai_waiter_inc_sigma_list)) || PyTuple_CheckExact(__pyx_v_lai_waiter_inc_sigma_list)) { - __pyx_t_1 = __pyx_v_lai_waiter_inc_sigma_list; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; - __pyx_t_3 = NULL; - } else { - __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_lai_waiter_inc_sigma_list); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) - } - for (;;) { - if (likely(!__pyx_t_3)) { - if (likely(PyList_CheckExact(__pyx_t_1))) { - if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 102, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } else { - if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 102, __pyx_L1_error) - #else - __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #endif - } - } else { - __pyx_t_4 = __pyx_t_3(__pyx_t_1); - if (unlikely(!__pyx_t_4)) { - PyObject* exc_type = PyErr_Occurred(); - if (exc_type) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); - else __PYX_ERR(0, 102, __pyx_L1_error) - } - break; - } - __Pyx_GOTREF(__pyx_t_4); - } - __Pyx_XDECREF_SET(__pyx_v_lai_waiter_inc_sigma_item, __pyx_t_4); - __pyx_t_4 = 0; - - /* "LAIProcess.pyx":103 - * err_lai=[] - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item # <<<<<<<<<<<<<< - * def f(X): - * lai=X[0] - */ - if ((likely(PyTuple_CheckExact(__pyx_v_lai_waiter_inc_sigma_item))) || (PyList_CheckExact(__pyx_v_lai_waiter_inc_sigma_item))) { - PyObject* sequence = __pyx_v_lai_waiter_inc_sigma_item; - Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); - if (unlikely(size != 9)) { - if (size > 9) __Pyx_RaiseTooManyValuesError(9); - else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 103, __pyx_L1_error) - } - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - if (likely(PyTuple_CheckExact(sequence))) { - __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); - __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); - __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); - __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); - __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); - __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); - __pyx_t_10 = PyTuple_GET_ITEM(sequence, 6); - __pyx_t_11 = PyTuple_GET_ITEM(sequence, 7); - __pyx_t_12 = PyTuple_GET_ITEM(sequence, 8); - } else { - __pyx_t_4 = PyList_GET_ITEM(sequence, 0); - __pyx_t_5 = PyList_GET_ITEM(sequence, 1); - __pyx_t_6 = PyList_GET_ITEM(sequence, 2); - __pyx_t_7 = PyList_GET_ITEM(sequence, 3); - __pyx_t_8 = PyList_GET_ITEM(sequence, 4); - __pyx_t_9 = PyList_GET_ITEM(sequence, 5); - __pyx_t_10 = PyList_GET_ITEM(sequence, 6); - __pyx_t_11 = PyList_GET_ITEM(sequence, 7); - __pyx_t_12 = PyList_GET_ITEM(sequence, 8); - } - __Pyx_INCREF(__pyx_t_4); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(__pyx_t_6); - __Pyx_INCREF(__pyx_t_7); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(__pyx_t_12); - #else - { - Py_ssize_t i; - PyObject** temps[9] = {&__pyx_t_4,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; - for (i=0; i < 9; i++) { - PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(item); - *(temps[i]) = item; - } - } - #endif - } else { - Py_ssize_t index = -1; - PyObject** temps[9] = {&__pyx_t_4,&__pyx_t_5,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; - __pyx_t_13 = PyObject_GetIter(__pyx_v_lai_waiter_inc_sigma_item); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 103, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; - for (index=0; index < 9; index++) { - PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; - __Pyx_GOTREF(item); - *(temps[index]) = item; - } - if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 9) < 0) __PYX_ERR(0, 103, __pyx_L1_error) - __pyx_t_14 = NULL; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - goto __pyx_L6_unpacking_done; - __pyx_L5_unpacking_failed:; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_14 = NULL; - if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 103, __pyx_L1_error) - __pyx_L6_unpacking_done:; - } - __Pyx_XDECREF_SET(__pyx_v_sample_time, __pyx_t_4); - __pyx_t_4 = 0; - __Pyx_XDECREF_SET(__pyx_v_sample_code, __pyx_t_5); - __pyx_t_5 = 0; - __Pyx_XDECREF_SET(__pyx_v_sample_lon, __pyx_t_6); - __pyx_t_6 = 0; - __Pyx_XDECREF_SET(__pyx_v_sample_lat, __pyx_t_7); - __pyx_t_7 = 0; - __Pyx_XDECREF_SET(__pyx_v_sample_lai, __pyx_t_8); - __pyx_t_8 = 0; - __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_csv_sigma); - __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_csv_sigma, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_9); - __pyx_t_9 = 0; - __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sample_soil); - __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_sample_soil, __pyx_t_10); - __Pyx_GIVEREF(__pyx_t_10); - __pyx_t_10 = 0; - __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_sample_inc); - __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_sample_inc, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_11); - __pyx_t_11 = 0; - __Pyx_XDECREF_SET(__pyx_v_sample_sigma, __pyx_t_12); - __pyx_t_12 = 0; - - /* "LAIProcess.pyx":104 - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - */ - __pyx_t_12 = __Pyx_CyFunction_New(&__pyx_mdef_10LAIProcess_13test_WMCModel_1f, 0, __pyx_n_s_test_WMCModel_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_LAIProcess, __pyx_d, ((PyObject *)__pyx_codeobj__4)); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_XDECREF_SET(__pyx_v_f, __pyx_t_12); - __pyx_t_12 = 0; - - /* "LAIProcess.pyx":108 - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - * return eqs - * X0=lai_X0 # <<<<<<<<<<<<<< - * h = leastsq(f, X0) - * temp_err=h[0]-sample_lai - */ - __Pyx_INCREF(__pyx_v_lai_X0); - __Pyx_XDECREF_SET(__pyx_v_X0, __pyx_v_lai_X0); - - /* "LAIProcess.pyx":109 - * return eqs - * X0=lai_X0 - * h = leastsq(f, X0) # <<<<<<<<<<<<<< - * temp_err=h[0]-sample_lai - * err_lai.append(temp_err[0]) # lai - */ - __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_leastsq); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_10 = NULL; - __pyx_t_15 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { - __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); - if (likely(__pyx_t_10)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); - __Pyx_INCREF(__pyx_t_10); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_11, function); - __pyx_t_15 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_11)) { - PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_f, __pyx_v_X0}; - __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_12); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { - PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_f, __pyx_v_X0}; - __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_GOTREF(__pyx_t_12); - } else - #endif - { - __pyx_t_9 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_10) { - __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; - } - __Pyx_INCREF(__pyx_v_f); - __Pyx_GIVEREF(__pyx_v_f); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_15, __pyx_v_f); - __Pyx_INCREF(__pyx_v_X0); - __Pyx_GIVEREF(__pyx_v_X0); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_15, __pyx_v_X0); - __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_XDECREF_SET(__pyx_v_h, __pyx_t_12); - __pyx_t_12 = 0; - - /* "LAIProcess.pyx":110 - * X0=lai_X0 - * h = leastsq(f, X0) - * temp_err=h[0]-sample_lai # <<<<<<<<<<<<<< - * err_lai.append(temp_err[0]) # lai - * err.append([sample_lai,temp_err[0],h[0][0],sample_code]) - */ - __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_h, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_11 = PyNumber_Subtract(__pyx_t_12, __pyx_v_sample_lai); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 110, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_XDECREF_SET(__pyx_v_temp_err, __pyx_t_11); - __pyx_t_11 = 0; - - /* "LAIProcess.pyx":111 - * h = leastsq(f, X0) - * temp_err=h[0]-sample_lai - * err_lai.append(temp_err[0]) # lai # <<<<<<<<<<<<<< - * err.append([sample_lai,temp_err[0],h[0][0],sample_code]) - * err_f.append(f(h[0])[0]) # - */ - __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_temp_err, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_err_lai, __pyx_t_11); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - - /* "LAIProcess.pyx":112 - * temp_err=h[0]-sample_lai - * err_lai.append(temp_err[0]) # lai - * err.append([sample_lai,temp_err[0],h[0][0],sample_code]) # <<<<<<<<<<<<<< - * err_f.append(f(h[0])[0]) # - * x_arr.append(sample_lai) - */ - __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_temp_err, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_h, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_12, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = PyList_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_INCREF(__pyx_v_sample_lai); - __Pyx_GIVEREF(__pyx_v_sample_lai); - PyList_SET_ITEM(__pyx_t_12, 0, __pyx_v_sample_lai); - __Pyx_GIVEREF(__pyx_t_11); - PyList_SET_ITEM(__pyx_t_12, 1, __pyx_t_11); - __Pyx_GIVEREF(__pyx_t_9); - PyList_SET_ITEM(__pyx_t_12, 2, __pyx_t_9); - __Pyx_INCREF(__pyx_v_sample_code); - __Pyx_GIVEREF(__pyx_v_sample_code); - PyList_SET_ITEM(__pyx_t_12, 3, __pyx_v_sample_code); - __pyx_t_11 = 0; - __pyx_t_9 = 0; - __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_err, __pyx_t_12); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "LAIProcess.pyx":113 - * err_lai.append(temp_err[0]) # lai - * err.append([sample_lai,temp_err[0],h[0][0],sample_code]) - * err_f.append(f(h[0])[0]) # # <<<<<<<<<<<<<< - * x_arr.append(sample_lai) - * - */ - __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_h, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_9 = __pyx_pf_10LAIProcess_13test_WMCModel_f(__pyx_v_f, __pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __pyx_t_12 = __Pyx_GetItemInt(__pyx_t_9, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_err_f, __pyx_t_12); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 113, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "LAIProcess.pyx":114 - * err.append([sample_lai,temp_err[0],h[0][0],sample_code]) - * err_f.append(f(h[0])[0]) # - * x_arr.append(sample_lai) # <<<<<<<<<<<<<< - * - * # - */ - __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_x_arr, __pyx_v_sample_lai); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 114, __pyx_L1_error) - - /* "LAIProcess.pyx":102 - * x_arr=[] - * err_lai=[] - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: # <<<<<<<<<<<<<< - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): - */ - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "LAIProcess.pyx":122 - * # logger.info("\n\n") - * - * if draw_flag: # <<<<<<<<<<<<<< - * from matplotlib import pyplot as plt - * plt.scatter(x_arr,err_lai) - */ - __pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_v_draw_flag); if (unlikely(__pyx_t_17 < 0)) __PYX_ERR(0, 122, __pyx_L1_error) - if (__pyx_t_17) { - - /* "LAIProcess.pyx":123 - * - * if draw_flag: - * from matplotlib import pyplot as plt # <<<<<<<<<<<<<< - * plt.scatter(x_arr,err_lai) - * plt.title("equation-err") - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_pyplot); - __Pyx_GIVEREF(__pyx_n_s_pyplot); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_pyplot); - __pyx_t_12 = __Pyx_Import(__pyx_n_s_matplotlib, __pyx_t_1, -1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_12, __pyx_n_s_pyplot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __pyx_v_plt = __pyx_t_1; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "LAIProcess.pyx":124 - * if draw_flag: - * from matplotlib import pyplot as plt - * plt.scatter(x_arr,err_lai) # <<<<<<<<<<<<<< - * plt.title("equation-err") - * plt.savefig(test_err_image_path,dpi=600) - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_scatter); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = NULL; - __pyx_t_15 = 0; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_15 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_x_arr, __pyx_v_err_lai}; - __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_12); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_x_arr, __pyx_v_err_lai}; - __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_15, 2+__pyx_t_15); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_GOTREF(__pyx_t_12); - } else - #endif - { - __pyx_t_11 = PyTuple_New(2+__pyx_t_15); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - if (__pyx_t_9) { - __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; - } - __Pyx_INCREF(__pyx_v_x_arr); - __Pyx_GIVEREF(__pyx_v_x_arr); - PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_15, __pyx_v_x_arr); - __Pyx_INCREF(__pyx_v_err_lai); - __Pyx_GIVEREF(__pyx_v_err_lai); - PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_15, __pyx_v_err_lai); - __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 124, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "LAIProcess.pyx":125 - * from matplotlib import pyplot as plt - * plt.scatter(x_arr,err_lai) - * plt.title("equation-err") # <<<<<<<<<<<<<< - * plt.savefig(test_err_image_path,dpi=600) - * plt.show() - */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_title); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_11 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - __pyx_t_12 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_11, __pyx_kp_s_equation_err) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s_equation_err); - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 125, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - - /* "LAIProcess.pyx":126 - * plt.scatter(x_arr,err_lai) - * plt.title("equation-err") - * plt.savefig(test_err_image_path,dpi=600) # <<<<<<<<<<<<<< - * plt.show() - * return err - */ - __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_savefig); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_v_test_err_image_path); - __Pyx_GIVEREF(__pyx_v_test_err_image_path); - PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_test_err_image_path); - __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_dpi, __pyx_int_600) < 0) __PYX_ERR(0, 126, __pyx_L1_error) - __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "LAIProcess.pyx":127 - * plt.title("equation-err") - * plt.savefig(test_err_image_path,dpi=600) - * plt.show() # <<<<<<<<<<<<<< - * return err - * - */ - __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_plt, __pyx_n_s_show); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_11); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_11, function); - } - } - __pyx_t_9 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 127, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - - /* "LAIProcess.pyx":122 - * # logger.info("\n\n") - * - * if draw_flag: # <<<<<<<<<<<<<< - * from matplotlib import pyplot as plt - * plt.scatter(x_arr,err_lai) - */ - } - - /* "LAIProcess.pyx":128 - * plt.savefig(test_err_image_path,dpi=600) - * plt.show() - * return err # <<<<<<<<<<<<<< - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_err); - __pyx_r = __pyx_v_err; - goto __pyx_L0; - - /* "LAIProcess.pyx":82 - * return h[0] - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_AddTraceback("LAIProcess.test_WMCModel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_err); - __Pyx_XDECREF(__pyx_v_err_f); - __Pyx_XDECREF(__pyx_v_x_arr); - __Pyx_XDECREF(__pyx_v_err_lai); - __Pyx_XDECREF(__pyx_v_lai_waiter_inc_sigma_item); - __Pyx_XDECREF(__pyx_v_sample_time); - __Pyx_XDECREF(__pyx_v_sample_code); - __Pyx_XDECREF(__pyx_v_sample_lon); - __Pyx_XDECREF(__pyx_v_sample_lat); - __Pyx_XDECREF(__pyx_v_sample_lai); - __Pyx_XDECREF(__pyx_v_sample_sigma); - __Pyx_XDECREF(__pyx_v_f); - __Pyx_XDECREF(__pyx_v_X0); - __Pyx_XDECREF(__pyx_v_h); - __Pyx_XDECREF(__pyx_v_temp_err); - __Pyx_XDECREF(__pyx_v_plt); - __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":130 - * return err - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): # <<<<<<<<<<<<<< - * - * if(sigma<0 ): - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_7processs_WMCModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_10LAIProcess_7processs_WMCModel = {"processs_WMCModel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_7processs_WMCModel, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10LAIProcess_7processs_WMCModel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_param_arr = 0; - PyObject *__pyx_v_lai_X0 = 0; - PyObject *__pyx_v_sigma = 0; - PyObject *__pyx_v_inc_angle = 0; - PyObject *__pyx_v_soil_water = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("processs_WMCModel (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_arr,&__pyx_n_s_lai_X0,&__pyx_n_s_sigma,&__pyx_n_s_inc_angle,&__pyx_n_s_soil_water,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_arr)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lai_X0)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("processs_WMCModel", 1, 5, 5, 1); __PYX_ERR(0, 130, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("processs_WMCModel", 1, 5, 5, 2); __PYX_ERR(0, 130, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inc_angle)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("processs_WMCModel", 1, 5, 5, 3); __PYX_ERR(0, 130, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_soil_water)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("processs_WMCModel", 1, 5, 5, 4); __PYX_ERR(0, 130, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "processs_WMCModel") < 0)) __PYX_ERR(0, 130, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_param_arr = values[0]; - __pyx_v_lai_X0 = values[1]; - __pyx_v_sigma = values[2]; - __pyx_v_inc_angle = values[3]; - __pyx_v_soil_water = values[4]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("processs_WMCModel", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 130, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.processs_WMCModel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_6processs_WMCModel(__pyx_self, __pyx_v_param_arr, __pyx_v_lai_X0, __pyx_v_sigma, __pyx_v_inc_angle, __pyx_v_soil_water); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":134 - * if(sigma<0 ): - * return np.nan - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - */ - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_17processs_WMCModel_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_10LAIProcess_17processs_WMCModel_1f = {"f", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_17processs_WMCModel_1f, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_10LAIProcess_17processs_WMCModel_1f(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyObject *__pyx_v_X = 0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("f (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_X,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_X)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "f") < 0)) __PYX_ERR(0, 134, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_X = values[0]; - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("f", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 134, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.processs_WMCModel.f", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_10LAIProcess_17processs_WMCModel_f(__pyx_self, __pyx_v_X); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_10LAIProcess_17processs_WMCModel_f(PyObject *__pyx_self, PyObject *__pyx_v_X) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *__pyx_cur_scope; - struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *__pyx_outer_scope; - PyObject *__pyx_v_lai = NULL; - PyObject *__pyx_v_eqs = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("f", 0); - __pyx_outer_scope = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *) __Pyx_CyFunction_GetClosure(__pyx_self); - __pyx_cur_scope = __pyx_outer_scope; - - /* "LAIProcess.pyx":135 - * return np.nan - * def f(X): - * lai=X[0] # <<<<<<<<<<<<<< - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - * return eqs - */ - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_X, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 135, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_v_lai = __pyx_t_1; - __pyx_t_1 = 0; - - /* "LAIProcess.pyx":136 - * def f(X): - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] # <<<<<<<<<<<<<< - * return eqs - * h = leastsq(f, [lai_X0]) - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_WMCModel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (unlikely(!__pyx_cur_scope->__pyx_v_param_arr)) { __Pyx_RaiseClosureNameError("param_arr"); __PYX_ERR(0, 136, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_v_soil_water)) { __Pyx_RaiseClosureNameError("soil_water"); __PYX_ERR(0, 136, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_v_inc_angle)) { __Pyx_RaiseClosureNameError("inc_angle"); __PYX_ERR(0, 136, __pyx_L1_error) } - if (unlikely(!__pyx_cur_scope->__pyx_v_sigma)) { __Pyx_RaiseClosureNameError("sigma"); __PYX_ERR(0, 136, __pyx_L1_error) } - __pyx_t_3 = NULL; - __pyx_t_4 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_4 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_arr, __pyx_v_lai, __pyx_cur_scope->__pyx_v_soil_water, __pyx_cur_scope->__pyx_v_inc_angle, __pyx_cur_scope->__pyx_v_sigma}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_arr, __pyx_v_lai, __pyx_cur_scope->__pyx_v_soil_water, __pyx_cur_scope->__pyx_v_inc_angle, __pyx_cur_scope->__pyx_v_sigma}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - } else - #endif - { - __pyx_t_5 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_arr); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_arr); - PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_arr); - __Pyx_INCREF(__pyx_v_lai); - __Pyx_GIVEREF(__pyx_v_lai); - PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_lai); - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_soil_water); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_soil_water); - PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_soil_water); - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_inc_angle); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inc_angle); - PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_inc_angle); - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sigma); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sigma); - PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_cur_scope->__pyx_v_sigma); - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_GIVEREF(__pyx_t_1); - PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); - __pyx_t_1 = 0; - __pyx_v_eqs = ((PyObject*)__pyx_t_2); - __pyx_t_2 = 0; - - /* "LAIProcess.pyx":137 - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - * return eqs # <<<<<<<<<<<<<< - * h = leastsq(f, [lai_X0]) - * - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_v_eqs); - __pyx_r = __pyx_v_eqs; - goto __pyx_L0; - - /* "LAIProcess.pyx":134 - * if(sigma<0 ): - * return np.nan - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_AddTraceback("LAIProcess.processs_WMCModel.f", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_lai); - __Pyx_XDECREF(__pyx_v_eqs); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":130 - * return err - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): # <<<<<<<<<<<<<< - * - * if(sigma<0 ): - */ - -static PyObject *__pyx_pf_10LAIProcess_6processs_WMCModel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_param_arr, PyObject *__pyx_v_lai_X0, PyObject *__pyx_v_sigma, PyObject *__pyx_v_inc_angle, PyObject *__pyx_v_soil_water) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *__pyx_cur_scope; - PyObject *__pyx_v_f = 0; - PyObject *__pyx_v_h = NULL; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - int __pyx_t_6; - PyObject *__pyx_t_7 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("processs_WMCModel", 0); - __pyx_cur_scope = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *)__pyx_tp_new_10LAIProcess___pyx_scope_struct_2_processs_WMCModel(__pyx_ptype_10LAIProcess___pyx_scope_struct_2_processs_WMCModel, __pyx_empty_tuple, NULL); - if (unlikely(!__pyx_cur_scope)) { - __pyx_cur_scope = ((struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *)Py_None); - __Pyx_INCREF(Py_None); - __PYX_ERR(0, 130, __pyx_L1_error) - } else { - __Pyx_GOTREF(__pyx_cur_scope); - } - __pyx_cur_scope->__pyx_v_param_arr = __pyx_v_param_arr; - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_arr); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_arr); - __pyx_cur_scope->__pyx_v_sigma = __pyx_v_sigma; - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_sigma); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_sigma); - __pyx_cur_scope->__pyx_v_inc_angle = __pyx_v_inc_angle; - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_inc_angle); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inc_angle); - __pyx_cur_scope->__pyx_v_soil_water = __pyx_v_soil_water; - __Pyx_INCREF(__pyx_cur_scope->__pyx_v_soil_water); - __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_soil_water); - - /* "LAIProcess.pyx":132 - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): - * - * if(sigma<0 ): # <<<<<<<<<<<<<< - * return np.nan - * def f(X): - */ - __pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_sigma, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 132, __pyx_L1_error) - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 132, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "LAIProcess.pyx":133 - * - * if(sigma<0 ): - * return np.nan # <<<<<<<<<<<<<< - * def f(X): - * lai=X[0] - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; - goto __pyx_L0; - - /* "LAIProcess.pyx":132 - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): - * - * if(sigma<0 ): # <<<<<<<<<<<<<< - * return np.nan - * def f(X): - */ - } - - /* "LAIProcess.pyx":134 - * if(sigma<0 ): - * return np.nan - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - */ - __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_10LAIProcess_17processs_WMCModel_1f, 0, __pyx_n_s_processs_WMCModel_locals_f, ((PyObject*)__pyx_cur_scope), __pyx_n_s_LAIProcess, __pyx_d, ((PyObject *)__pyx_codeobj__6)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_v_f = __pyx_t_3; - __pyx_t_3 = 0; - - /* "LAIProcess.pyx":138 - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - * return eqs - * h = leastsq(f, [lai_X0]) # <<<<<<<<<<<<<< - * - * return h[0][0] - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_leastsq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_INCREF(__pyx_v_lai_X0); - __Pyx_GIVEREF(__pyx_v_lai_X0); - PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_lai_X0); - __pyx_t_5 = NULL; - __pyx_t_6 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - __pyx_t_6 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_f, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { - PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_f, __pyx_t_4}; - __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - } else - #endif - { - __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - if (__pyx_t_5) { - __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; - } - __Pyx_INCREF(__pyx_v_f); - __Pyx_GIVEREF(__pyx_v_f); - PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_f); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); - __pyx_t_4 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_h = __pyx_t_3; - __pyx_t_3 = 0; - - /* "LAIProcess.pyx":140 - * h = leastsq(f, [lai_X0]) - * - * return h[0][0] # <<<<<<<<<<<<<< - * - * # Cython - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_h, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 140, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "LAIProcess.pyx":130 - * return err - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): # <<<<<<<<<<<<<< - * - * if(sigma<0 ): - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_AddTraceback("LAIProcess.processs_WMCModel", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XDECREF(__pyx_v_f); - __Pyx_XDECREF(__pyx_v_h); - __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "LAIProcess.pyx":143 - * - * # Cython - * cpdef np.ndarray[double,ndim=2] process_tiff(np.ndarray[double,ndim=2] sigma_tiff, # <<<<<<<<<<<<<< - * np.ndarray[double,ndim=2] inc_tiff, - * np.ndarray[double,ndim=2] soil_water_tiff, - */ - -static PyObject *__pyx_pw_10LAIProcess_9process_tiff(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyArrayObject *__pyx_f_10LAIProcess_process_tiff(PyArrayObject *__pyx_v_sigma_tiff, PyArrayObject *__pyx_v_inc_tiff, PyArrayObject *__pyx_v_soil_water_tiff, PyArrayObject *__pyx_v_param_arr, double __pyx_v_lai_X0, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyArrayObject *__pyx_v_result = 0; - CYTHON_UNUSED int __pyx_v_param_arr_length; - int __pyx_v_height; - int __pyx_v_width; - int __pyx_v_i; - int __pyx_v_j; - double __pyx_v_temp; - __Pyx_LocalBuf_ND __pyx_pybuffernd_inc_tiff; - __Pyx_Buffer __pyx_pybuffer_inc_tiff; - __Pyx_LocalBuf_ND __pyx_pybuffernd_param_arr; - __Pyx_Buffer __pyx_pybuffer_param_arr; - __Pyx_LocalBuf_ND __pyx_pybuffernd_result; - __Pyx_Buffer __pyx_pybuffer_result; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma_tiff; - __Pyx_Buffer __pyx_pybuffer_sigma_tiff; - __Pyx_LocalBuf_ND __pyx_pybuffernd_soil_water_tiff; - __Pyx_Buffer __pyx_pybuffer_soil_water_tiff; - PyArrayObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyObject *__pyx_t_4 = NULL; - Py_ssize_t __pyx_t_5; - Py_ssize_t __pyx_t_6; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - double __pyx_t_13; - int __pyx_t_14; - double __pyx_t_15; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("process_tiff", 0); - __pyx_pybuffer_result.pybuffer.buf = NULL; - __pyx_pybuffer_result.refcount = 0; - __pyx_pybuffernd_result.data = NULL; - __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; - __pyx_pybuffer_sigma_tiff.pybuffer.buf = NULL; - __pyx_pybuffer_sigma_tiff.refcount = 0; - __pyx_pybuffernd_sigma_tiff.data = NULL; - __pyx_pybuffernd_sigma_tiff.rcbuffer = &__pyx_pybuffer_sigma_tiff; - __pyx_pybuffer_inc_tiff.pybuffer.buf = NULL; - __pyx_pybuffer_inc_tiff.refcount = 0; - __pyx_pybuffernd_inc_tiff.data = NULL; - __pyx_pybuffernd_inc_tiff.rcbuffer = &__pyx_pybuffer_inc_tiff; - __pyx_pybuffer_soil_water_tiff.pybuffer.buf = NULL; - __pyx_pybuffer_soil_water_tiff.refcount = 0; - __pyx_pybuffernd_soil_water_tiff.data = NULL; - __pyx_pybuffernd_soil_water_tiff.rcbuffer = &__pyx_pybuffer_soil_water_tiff; - __pyx_pybuffer_param_arr.pybuffer.buf = NULL; - __pyx_pybuffer_param_arr.refcount = 0; - __pyx_pybuffernd_param_arr.data = NULL; - __pyx_pybuffernd_param_arr.rcbuffer = &__pyx_pybuffer_param_arr; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma_tiff, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_sigma_tiff.diminfo[0].strides = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma_tiff.diminfo[0].shape = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_sigma_tiff.diminfo[1].strides = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_sigma_tiff.diminfo[1].shape = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer, (PyObject*)__pyx_v_inc_tiff, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_inc_tiff.diminfo[0].strides = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_inc_tiff.diminfo[0].shape = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_inc_tiff.diminfo[1].strides = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_inc_tiff.diminfo[1].shape = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer, (PyObject*)__pyx_v_soil_water_tiff, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_soil_water_tiff.diminfo[0].strides = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_soil_water_tiff.diminfo[0].shape = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_soil_water_tiff.diminfo[1].strides = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_soil_water_tiff.diminfo[1].shape = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_param_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_param_arr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_param_arr.diminfo[0].strides = __pyx_pybuffernd_param_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_param_arr.diminfo[0].shape = __pyx_pybuffernd_param_arr.rcbuffer->pybuffer.shape[0]; - - /* "LAIProcess.pyx":149 - * double lai_X0): - * - * cdef np.ndarray[double,ndim=2] result=sigma_tiff # <<<<<<<<<<<<<< - * cdef int param_arr_length=param_arr.shape[0] - * cdef int height=sigma_tiff.shape[0] - */ - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_v_sigma_tiff), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) { - __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_result.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 149, __pyx_L1_error) - } else {__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_result.diminfo[1].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_result.diminfo[1].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[1]; - } - } - __Pyx_INCREF(((PyObject *)__pyx_v_sigma_tiff)); - __pyx_v_result = ((PyArrayObject *)__pyx_v_sigma_tiff); - - /* "LAIProcess.pyx":150 - * - * cdef np.ndarray[double,ndim=2] result=sigma_tiff - * cdef int param_arr_length=param_arr.shape[0] # <<<<<<<<<<<<<< - * cdef int height=sigma_tiff.shape[0] - * cdef int width=sigma_tiff.shape[1] - */ - __pyx_v_param_arr_length = (__pyx_v_param_arr->dimensions[0]); - - /* "LAIProcess.pyx":151 - * cdef np.ndarray[double,ndim=2] result=sigma_tiff - * cdef int param_arr_length=param_arr.shape[0] - * cdef int height=sigma_tiff.shape[0] # <<<<<<<<<<<<<< - * cdef int width=sigma_tiff.shape[1] - * cdef int i=0 - */ - __pyx_v_height = (__pyx_v_sigma_tiff->dimensions[0]); - - /* "LAIProcess.pyx":152 - * cdef int param_arr_length=param_arr.shape[0] - * cdef int height=sigma_tiff.shape[0] - * cdef int width=sigma_tiff.shape[1] # <<<<<<<<<<<<<< - * cdef int i=0 - * cdef int j=0 - */ - __pyx_v_width = (__pyx_v_sigma_tiff->dimensions[1]); - - /* "LAIProcess.pyx":153 - * cdef int height=sigma_tiff.shape[0] - * cdef int width=sigma_tiff.shape[1] - * cdef int i=0 # <<<<<<<<<<<<<< - * cdef int j=0 - * cdef double temp=0 - */ - __pyx_v_i = 0; - - /* "LAIProcess.pyx":154 - * cdef int width=sigma_tiff.shape[1] - * cdef int i=0 - * cdef int j=0 # <<<<<<<<<<<<<< - * cdef double temp=0 - * - */ - __pyx_v_j = 0; - - /* "LAIProcess.pyx":155 - * cdef int i=0 - * cdef int j=0 - * cdef double temp=0 # <<<<<<<<<<<<<< - * - * while i=0 else np.nan - */ - while (1) { - __pyx_t_1 = ((__pyx_v_j < __pyx_v_width) != 0); - if (!__pyx_t_1) break; - - /* "LAIProcess.pyx":160 - * j=0 - * while j=0 else np.nan - * result[i,j]=temp - */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_processs_WMCModel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyFloat_FromDouble(__pyx_v_lai_X0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __pyx_v_i; - __pyx_t_6 = __pyx_v_j; - __pyx_t_7 = -1; - if (__pyx_t_5 < 0) { - __pyx_t_5 += __pyx_pybuffernd_sigma_tiff.diminfo[0].shape; - if (unlikely(__pyx_t_5 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_sigma_tiff.diminfo[0].shape)) __pyx_t_7 = 0; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_sigma_tiff.diminfo[1].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 1; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_sigma_tiff.diminfo[1].shape)) __pyx_t_7 = 1; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 160, __pyx_L1_error) - } - __pyx_t_8 = PyFloat_FromDouble((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_sigma_tiff.diminfo[0].strides, __pyx_t_6, __pyx_pybuffernd_sigma_tiff.diminfo[1].strides))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_6 = __pyx_v_i; - __pyx_t_5 = __pyx_v_j; - __pyx_t_7 = -1; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_inc_tiff.diminfo[0].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_inc_tiff.diminfo[0].shape)) __pyx_t_7 = 0; - if (__pyx_t_5 < 0) { - __pyx_t_5 += __pyx_pybuffernd_inc_tiff.diminfo[1].shape; - if (unlikely(__pyx_t_5 < 0)) __pyx_t_7 = 1; - } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_inc_tiff.diminfo[1].shape)) __pyx_t_7 = 1; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 160, __pyx_L1_error) - } - __pyx_t_9 = PyFloat_FromDouble((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_inc_tiff.diminfo[0].strides, __pyx_t_5, __pyx_pybuffernd_inc_tiff.diminfo[1].strides))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_5 = __pyx_v_i; - __pyx_t_6 = __pyx_v_j; - __pyx_t_7 = -1; - if (__pyx_t_5 < 0) { - __pyx_t_5 += __pyx_pybuffernd_soil_water_tiff.diminfo[0].shape; - if (unlikely(__pyx_t_5 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_soil_water_tiff.diminfo[0].shape)) __pyx_t_7 = 0; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_soil_water_tiff.diminfo[1].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 1; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_soil_water_tiff.diminfo[1].shape)) __pyx_t_7 = 1; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 160, __pyx_L1_error) - } - __pyx_t_10 = PyFloat_FromDouble((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.buf, __pyx_t_5, __pyx_pybuffernd_soil_water_tiff.diminfo[0].strides, __pyx_t_6, __pyx_pybuffernd_soil_water_tiff.diminfo[1].strides))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_11)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_11); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[6] = {__pyx_t_11, ((PyObject *)__pyx_v_param_arr), __pyx_t_4, __pyx_t_8, __pyx_t_9, __pyx_t_10}; - __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { - PyObject *__pyx_temp[6] = {__pyx_t_11, ((PyObject *)__pyx_v_param_arr), __pyx_t_4, __pyx_t_8, __pyx_t_9, __pyx_t_10}; - __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - } else - #endif - { - __pyx_t_12 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - if (__pyx_t_11) { - __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL; - } - __Pyx_INCREF(((PyObject *)__pyx_v_param_arr)); - __Pyx_GIVEREF(((PyObject *)__pyx_v_param_arr)); - PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_7, ((PyObject *)__pyx_v_param_arr)); - __Pyx_GIVEREF(__pyx_t_4); - PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_7, __pyx_t_4); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_7, __pyx_t_8); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_7, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_10); - PyTuple_SET_ITEM(__pyx_t_12, 4+__pyx_t_7, __pyx_t_10); - __pyx_t_4 = 0; - __pyx_t_8 = 0; - __pyx_t_9 = 0; - __pyx_t_10 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - } - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 160, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_v_temp = __pyx_t_13; - - /* "LAIProcess.pyx":161 - * while j=0 else np.nan # <<<<<<<<<<<<<< - * result[i,j]=temp - * j=j+1 - */ - __pyx_t_14 = ((__pyx_v_temp < 10.0) != 0); - if (__pyx_t_14) { - } else { - __pyx_t_1 = __pyx_t_14; - goto __pyx_L7_bool_binop_done; - } - __pyx_t_14 = ((__pyx_v_temp >= 0.0) != 0); - __pyx_t_1 = __pyx_t_14; - __pyx_L7_bool_binop_done:; - if (__pyx_t_1) { - __pyx_t_13 = __pyx_v_temp; - } else { - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 161, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_13 = __pyx_t_15; - } - __pyx_v_temp = __pyx_t_13; - - /* "LAIProcess.pyx":162 - * temp = processs_WMCModel(param_arr,lai_X0,sigma_tiff[i,j],inc_tiff[i,j],soil_water_tiff[i,j]) - * temp=temp if temp<10 and temp>=0 else np.nan - * result[i,j]=temp # <<<<<<<<<<<<<< - * j=j+1 - * i=i+1 - */ - __pyx_t_6 = __pyx_v_i; - __pyx_t_5 = __pyx_v_j; - __pyx_t_7 = -1; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0; - if (__pyx_t_5 < 0) { - __pyx_t_5 += __pyx_pybuffernd_result.diminfo[1].shape; - if (unlikely(__pyx_t_5 < 0)) __pyx_t_7 = 1; - } else if (unlikely(__pyx_t_5 >= __pyx_pybuffernd_result.diminfo[1].shape)) __pyx_t_7 = 1; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 162, __pyx_L1_error) - } - *__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_result.diminfo[0].strides, __pyx_t_5, __pyx_pybuffernd_result.diminfo[1].strides) = __pyx_v_temp; - - /* "LAIProcess.pyx":163 - * temp=temp if temp<10 and temp>=0 else np.nan - * result[i,j]=temp - * j=j+1 # <<<<<<<<<<<<<< - * i=i+1 - * return result - */ - __pyx_v_j = (__pyx_v_j + 1); - } - - /* "LAIProcess.pyx":164 - * result[i,j]=temp - * j=j+1 - * i=i+1 # <<<<<<<<<<<<<< - * return result - * - */ - __pyx_v_i = (__pyx_v_i + 1); - } - - /* "LAIProcess.pyx":165 - * j=j+1 - * i=i+1 - * return result # <<<<<<<<<<<<<< - * - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyArrayObject *)__pyx_v_result); - goto __pyx_L0; - - /* "LAIProcess.pyx":143 - * - * # Cython - * cpdef np.ndarray[double,ndim=2] process_tiff(np.ndarray[double,ndim=2] sigma_tiff, # <<<<<<<<<<<<<< - * np.ndarray[double,ndim=2] inc_tiff, - * np.ndarray[double,ndim=2] soil_water_tiff, - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); - __Pyx_XDECREF(__pyx_t_11); - __Pyx_XDECREF(__pyx_t_12); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_param_arr.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("LAIProcess.process_tiff", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_param_arr.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_10LAIProcess_9process_tiff(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_10LAIProcess_9process_tiff(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyArrayObject *__pyx_v_sigma_tiff = 0; - PyArrayObject *__pyx_v_inc_tiff = 0; - PyArrayObject *__pyx_v_soil_water_tiff = 0; - PyArrayObject *__pyx_v_param_arr = 0; - double __pyx_v_lai_X0; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("process_tiff (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sigma_tiff,&__pyx_n_s_inc_tiff,&__pyx_n_s_soil_water_tiff,&__pyx_n_s_param_arr,&__pyx_n_s_lai_X0,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma_tiff)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_inc_tiff)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("process_tiff", 1, 5, 5, 1); __PYX_ERR(0, 143, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_soil_water_tiff)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("process_tiff", 1, 5, 5, 2); __PYX_ERR(0, 143, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_arr)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("process_tiff", 1, 5, 5, 3); __PYX_ERR(0, 143, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lai_X0)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("process_tiff", 1, 5, 5, 4); __PYX_ERR(0, 143, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "process_tiff") < 0)) __PYX_ERR(0, 143, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_sigma_tiff = ((PyArrayObject *)values[0]); - __pyx_v_inc_tiff = ((PyArrayObject *)values[1]); - __pyx_v_soil_water_tiff = ((PyArrayObject *)values[2]); - __pyx_v_param_arr = ((PyArrayObject *)values[3]); - __pyx_v_lai_X0 = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_lai_X0 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 147, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("process_tiff", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 143, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("LAIProcess.process_tiff", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sigma_tiff), __pyx_ptype_5numpy_ndarray, 1, "sigma_tiff", 0))) __PYX_ERR(0, 143, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_inc_tiff), __pyx_ptype_5numpy_ndarray, 1, "inc_tiff", 0))) __PYX_ERR(0, 144, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_soil_water_tiff), __pyx_ptype_5numpy_ndarray, 1, "soil_water_tiff", 0))) __PYX_ERR(0, 145, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_param_arr), __pyx_ptype_5numpy_ndarray, 1, "param_arr", 0))) __PYX_ERR(0, 146, __pyx_L1_error) - __pyx_r = __pyx_pf_10LAIProcess_8process_tiff(__pyx_self, __pyx_v_sigma_tiff, __pyx_v_inc_tiff, __pyx_v_soil_water_tiff, __pyx_v_param_arr, __pyx_v_lai_X0); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_10LAIProcess_8process_tiff(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_sigma_tiff, PyArrayObject *__pyx_v_inc_tiff, PyArrayObject *__pyx_v_soil_water_tiff, PyArrayObject *__pyx_v_param_arr, double __pyx_v_lai_X0) { - __Pyx_LocalBuf_ND __pyx_pybuffernd_inc_tiff; - __Pyx_Buffer __pyx_pybuffer_inc_tiff; - __Pyx_LocalBuf_ND __pyx_pybuffernd_param_arr; - __Pyx_Buffer __pyx_pybuffer_param_arr; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma_tiff; - __Pyx_Buffer __pyx_pybuffer_sigma_tiff; - __Pyx_LocalBuf_ND __pyx_pybuffernd_soil_water_tiff; - __Pyx_Buffer __pyx_pybuffer_soil_water_tiff; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("process_tiff", 0); - __pyx_pybuffer_sigma_tiff.pybuffer.buf = NULL; - __pyx_pybuffer_sigma_tiff.refcount = 0; - __pyx_pybuffernd_sigma_tiff.data = NULL; - __pyx_pybuffernd_sigma_tiff.rcbuffer = &__pyx_pybuffer_sigma_tiff; - __pyx_pybuffer_inc_tiff.pybuffer.buf = NULL; - __pyx_pybuffer_inc_tiff.refcount = 0; - __pyx_pybuffernd_inc_tiff.data = NULL; - __pyx_pybuffernd_inc_tiff.rcbuffer = &__pyx_pybuffer_inc_tiff; - __pyx_pybuffer_soil_water_tiff.pybuffer.buf = NULL; - __pyx_pybuffer_soil_water_tiff.refcount = 0; - __pyx_pybuffernd_soil_water_tiff.data = NULL; - __pyx_pybuffernd_soil_water_tiff.rcbuffer = &__pyx_pybuffer_soil_water_tiff; - __pyx_pybuffer_param_arr.pybuffer.buf = NULL; - __pyx_pybuffer_param_arr.refcount = 0; - __pyx_pybuffernd_param_arr.data = NULL; - __pyx_pybuffernd_param_arr.rcbuffer = &__pyx_pybuffer_param_arr; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma_tiff, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_sigma_tiff.diminfo[0].strides = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma_tiff.diminfo[0].shape = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_sigma_tiff.diminfo[1].strides = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_sigma_tiff.diminfo[1].shape = __pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer, (PyObject*)__pyx_v_inc_tiff, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_inc_tiff.diminfo[0].strides = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_inc_tiff.diminfo[0].shape = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_inc_tiff.diminfo[1].strides = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_inc_tiff.diminfo[1].shape = __pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer, (PyObject*)__pyx_v_soil_water_tiff, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_soil_water_tiff.diminfo[0].strides = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_soil_water_tiff.diminfo[0].shape = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_soil_water_tiff.diminfo[1].strides = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_soil_water_tiff.diminfo[1].shape = __pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_param_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_param_arr, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 143, __pyx_L1_error) - } - __pyx_pybuffernd_param_arr.diminfo[0].strides = __pyx_pybuffernd_param_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_param_arr.diminfo[0].shape = __pyx_pybuffernd_param_arr.rcbuffer->pybuffer.shape[0]; - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_10LAIProcess_process_tiff(__pyx_v_sigma_tiff, __pyx_v_inc_tiff, __pyx_v_soil_water_tiff, __pyx_v_param_arr, __pyx_v_lai_X0, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_param_arr.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("LAIProcess.process_tiff", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inc_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_param_arr.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma_tiff.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_soil_water_tiff.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":735 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":736 - * - * cdef inline object PyArray_MultiIterNew1(a): - * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew2(a, b): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 736, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":735 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":738 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":739 - * - * cdef inline object PyArray_MultiIterNew2(a, b): - * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":738 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":741 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":742 - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 742, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":741 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":744 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":745 - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":744 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":747 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":748 - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":747 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":750 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":751 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); - if (__pyx_t_1) { - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":752 - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape # <<<<<<<<<<<<<< - * else: - * return () - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); - __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":751 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - } - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":754 - * return d.subarray.shape - * else: - * return () # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_empty_tuple); - __pyx_r = __pyx_empty_tuple; - goto __pyx_L0; - } - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":750 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":931 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - -static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_array_base", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":932 - * - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< - * PyArray_SetBaseObject(arr, base) - * - */ - Py_INCREF(__pyx_v_base); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":933 - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< - * - * cdef inline object get_array_base(ndarray arr): - */ - (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":931 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":935 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { - PyObject *__pyx_v_base; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("get_array_base", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":936 - * - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< - * if base is NULL: - * return None - */ - __pyx_v_base = PyArray_BASE(__pyx_v_arr); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":937 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - __pyx_t_1 = ((__pyx_v_base == NULL) != 0); - if (__pyx_t_1) { - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":938 - * base = PyArray_BASE(arr) - * if base is NULL: - * return None # <<<<<<<<<<<<<< - * return base - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":937 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - } - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":939 - * if base is NULL: - * return None - * return base # <<<<<<<<<<<<<< - * - * # Versions of the import_* functions which are more suitable for - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_base)); - __pyx_r = ((PyObject *)__pyx_v_base); - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":935 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":943 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_array", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":945 - * cdef inline int import_array() except -1: - * try: - * __pyx_import_array() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") - */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 945, __pyx_L3_error) - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":946 - * try: - * __pyx_import_array() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.multiarray failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 946, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":947 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 947, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 947, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":943 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":949 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_umath", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":951 - * cdef inline int import_umath() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 951, __pyx_L3_error) - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":952 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 952, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":953 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 953, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 953, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":949 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":955 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_ufunc", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":957 - * cdef inline int import_ufunc() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 957, __pyx_L3_error) - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":958 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 958, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":959 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef extern from *: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 959, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 959, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":955 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":969 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_timedelta64_object", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":981 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":969 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":984 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_datetime64_object", 0); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":996 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":984 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":999 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - -static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { - npy_datetime __pyx_r; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1006 - * also needed. That can be found using `get_datetime64_unit`. - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":999 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1009 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - -static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { - npy_timedelta __pyx_r; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1013 - * returns the int64 value underlying scalar numpy timedelta64 object - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1009 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - -static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { - NPY_DATETIMEUNIT __pyx_r; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1020 - * returns the unit part of the dtype for a numpy datetime64 object. - * """ - * return (obj).obmeta.base # <<<<<<<<<<<<<< - */ - __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); - goto __pyx_L0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -static struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *__pyx_freelist_10LAIProcess___pyx_scope_struct__train_WMCmodel[8]; -static int __pyx_freecount_10LAIProcess___pyx_scope_struct__train_WMCmodel = 0; - -static PyObject *__pyx_tp_new_10LAIProcess___pyx_scope_struct__train_WMCmodel(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10LAIProcess___pyx_scope_struct__train_WMCmodel > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel)))) { - o = (PyObject*)__pyx_freelist_10LAIProcess___pyx_scope_struct__train_WMCmodel[--__pyx_freecount_10LAIProcess___pyx_scope_struct__train_WMCmodel]; - memset(o, 0, sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel)); - (void) PyObject_INIT(o, t); - PyObject_GC_Track(o); - } else { - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - } - return o; -} - -static void __pyx_tp_dealloc_10LAIProcess___pyx_scope_struct__train_WMCmodel(PyObject *o) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->__pyx_v_lai_water_inc_sigma_list); - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10LAIProcess___pyx_scope_struct__train_WMCmodel < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel)))) { - __pyx_freelist_10LAIProcess___pyx_scope_struct__train_WMCmodel[__pyx_freecount_10LAIProcess___pyx_scope_struct__train_WMCmodel++] = ((struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *)o); - } else { - (*Py_TYPE(o)->tp_free)(o); - } -} - -static int __pyx_tp_traverse_10LAIProcess___pyx_scope_struct__train_WMCmodel(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *)o; - if (p->__pyx_v_lai_water_inc_sigma_list) { - e = (*v)(p->__pyx_v_lai_water_inc_sigma_list, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_10LAIProcess___pyx_scope_struct__train_WMCmodel(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel *)o; - tmp = ((PyObject*)p->__pyx_v_lai_water_inc_sigma_list); - p->__pyx_v_lai_water_inc_sigma_list = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyTypeObject __pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel = { - PyVarObject_HEAD_INIT(0, 0) - "LAIProcess.__pyx_scope_struct__train_WMCmodel", /*tp_name*/ - sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct__train_WMCmodel), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10LAIProcess___pyx_scope_struct__train_WMCmodel, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_10LAIProcess___pyx_scope_struct__train_WMCmodel, /*tp_traverse*/ - __pyx_tp_clear_10LAIProcess___pyx_scope_struct__train_WMCmodel, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_10LAIProcess___pyx_scope_struct__train_WMCmodel, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; - -static struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *__pyx_freelist_10LAIProcess___pyx_scope_struct_1_test_WMCModel[8]; -static int __pyx_freecount_10LAIProcess___pyx_scope_struct_1_test_WMCModel = 0; - -static PyObject *__pyx_tp_new_10LAIProcess___pyx_scope_struct_1_test_WMCModel(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10LAIProcess___pyx_scope_struct_1_test_WMCModel > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel)))) { - o = (PyObject*)__pyx_freelist_10LAIProcess___pyx_scope_struct_1_test_WMCModel[--__pyx_freecount_10LAIProcess___pyx_scope_struct_1_test_WMCModel]; - memset(o, 0, sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel)); - (void) PyObject_INIT(o, t); - PyObject_GC_Track(o); - } else { - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - } - return o; -} - -static void __pyx_tp_dealloc_10LAIProcess___pyx_scope_struct_1_test_WMCModel(PyObject *o) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->__pyx_v_csv_sigma); - Py_CLEAR(p->__pyx_v_param_arr); - Py_CLEAR(p->__pyx_v_sample_inc); - Py_CLEAR(p->__pyx_v_sample_soil); - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10LAIProcess___pyx_scope_struct_1_test_WMCModel < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel)))) { - __pyx_freelist_10LAIProcess___pyx_scope_struct_1_test_WMCModel[__pyx_freecount_10LAIProcess___pyx_scope_struct_1_test_WMCModel++] = ((struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *)o); - } else { - (*Py_TYPE(o)->tp_free)(o); - } -} - -static int __pyx_tp_traverse_10LAIProcess___pyx_scope_struct_1_test_WMCModel(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *)o; - if (p->__pyx_v_csv_sigma) { - e = (*v)(p->__pyx_v_csv_sigma, a); if (e) return e; - } - if (p->__pyx_v_param_arr) { - e = (*v)(p->__pyx_v_param_arr, a); if (e) return e; - } - if (p->__pyx_v_sample_inc) { - e = (*v)(p->__pyx_v_sample_inc, a); if (e) return e; - } - if (p->__pyx_v_sample_soil) { - e = (*v)(p->__pyx_v_sample_soil, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_10LAIProcess___pyx_scope_struct_1_test_WMCModel(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel *)o; - tmp = ((PyObject*)p->__pyx_v_csv_sigma); - p->__pyx_v_csv_sigma = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_param_arr); - p->__pyx_v_param_arr = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_sample_inc); - p->__pyx_v_sample_inc = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_sample_soil); - p->__pyx_v_sample_soil = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyTypeObject __pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel = { - PyVarObject_HEAD_INIT(0, 0) - "LAIProcess.__pyx_scope_struct_1_test_WMCModel", /*tp_name*/ - sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_1_test_WMCModel), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10LAIProcess___pyx_scope_struct_1_test_WMCModel, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_10LAIProcess___pyx_scope_struct_1_test_WMCModel, /*tp_traverse*/ - __pyx_tp_clear_10LAIProcess___pyx_scope_struct_1_test_WMCModel, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_10LAIProcess___pyx_scope_struct_1_test_WMCModel, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; - -static struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *__pyx_freelist_10LAIProcess___pyx_scope_struct_2_processs_WMCModel[8]; -static int __pyx_freecount_10LAIProcess___pyx_scope_struct_2_processs_WMCModel = 0; - -static PyObject *__pyx_tp_new_10LAIProcess___pyx_scope_struct_2_processs_WMCModel(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { - PyObject *o; - if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10LAIProcess___pyx_scope_struct_2_processs_WMCModel > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel)))) { - o = (PyObject*)__pyx_freelist_10LAIProcess___pyx_scope_struct_2_processs_WMCModel[--__pyx_freecount_10LAIProcess___pyx_scope_struct_2_processs_WMCModel]; - memset(o, 0, sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel)); - (void) PyObject_INIT(o, t); - PyObject_GC_Track(o); - } else { - o = (*t->tp_alloc)(t, 0); - if (unlikely(!o)) return 0; - } - return o; -} - -static void __pyx_tp_dealloc_10LAIProcess___pyx_scope_struct_2_processs_WMCModel(PyObject *o) { - struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *)o; - PyObject_GC_UnTrack(o); - Py_CLEAR(p->__pyx_v_inc_angle); - Py_CLEAR(p->__pyx_v_param_arr); - Py_CLEAR(p->__pyx_v_sigma); - Py_CLEAR(p->__pyx_v_soil_water); - if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10LAIProcess___pyx_scope_struct_2_processs_WMCModel < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel)))) { - __pyx_freelist_10LAIProcess___pyx_scope_struct_2_processs_WMCModel[__pyx_freecount_10LAIProcess___pyx_scope_struct_2_processs_WMCModel++] = ((struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *)o); - } else { - (*Py_TYPE(o)->tp_free)(o); - } -} - -static int __pyx_tp_traverse_10LAIProcess___pyx_scope_struct_2_processs_WMCModel(PyObject *o, visitproc v, void *a) { - int e; - struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *)o; - if (p->__pyx_v_inc_angle) { - e = (*v)(p->__pyx_v_inc_angle, a); if (e) return e; - } - if (p->__pyx_v_param_arr) { - e = (*v)(p->__pyx_v_param_arr, a); if (e) return e; - } - if (p->__pyx_v_sigma) { - e = (*v)(p->__pyx_v_sigma, a); if (e) return e; - } - if (p->__pyx_v_soil_water) { - e = (*v)(p->__pyx_v_soil_water, a); if (e) return e; - } - return 0; -} - -static int __pyx_tp_clear_10LAIProcess___pyx_scope_struct_2_processs_WMCModel(PyObject *o) { - PyObject* tmp; - struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *p = (struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel *)o; - tmp = ((PyObject*)p->__pyx_v_inc_angle); - p->__pyx_v_inc_angle = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_param_arr); - p->__pyx_v_param_arr = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_sigma); - p->__pyx_v_sigma = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - tmp = ((PyObject*)p->__pyx_v_soil_water); - p->__pyx_v_soil_water = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); - return 0; -} - -static PyTypeObject __pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel = { - PyVarObject_HEAD_INIT(0, 0) - "LAIProcess.__pyx_scope_struct_2_processs_WMCModel", /*tp_name*/ - sizeof(struct __pyx_obj_10LAIProcess___pyx_scope_struct_2_processs_WMCModel), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - __pyx_tp_dealloc_10LAIProcess___pyx_scope_struct_2_processs_WMCModel, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 - 0, /*tp_vectorcall_offset*/ - #endif - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - #if PY_MAJOR_VERSION < 3 - 0, /*tp_compare*/ - #endif - #if PY_MAJOR_VERSION >= 3 - 0, /*tp_as_async*/ - #endif - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ - 0, /*tp_doc*/ - __pyx_tp_traverse_10LAIProcess___pyx_scope_struct_2_processs_WMCModel, /*tp_traverse*/ - __pyx_tp_clear_10LAIProcess___pyx_scope_struct_2_processs_WMCModel, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - 0, /*tp_methods*/ - 0, /*tp_members*/ - 0, /*tp_getset*/ - 0, /*tp_base*/ - 0, /*tp_dict*/ - 0, /*tp_descr_get*/ - 0, /*tp_descr_set*/ - 0, /*tp_dictoffset*/ - 0, /*tp_init*/ - 0, /*tp_alloc*/ - __pyx_tp_new_10LAIProcess___pyx_scope_struct_2_processs_WMCModel, /*tp_new*/ - 0, /*tp_free*/ - 0, /*tp_is_gc*/ - 0, /*tp_bases*/ - 0, /*tp_mro*/ - 0, /*tp_cache*/ - 0, /*tp_subclasses*/ - 0, /*tp_weaklist*/ - 0, /*tp_del*/ - 0, /*tp_version_tag*/ - #if PY_VERSION_HEX >= 0x030400a1 - 0, /*tp_finalize*/ - #endif - #if PY_VERSION_HEX >= 0x030800b1 - 0, /*tp_vectorcall*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, /*tp_print*/ - #endif -}; - -static PyMethodDef __pyx_methods[] = { - {"process_tiff", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_10LAIProcess_9process_tiff, METH_VARARGS|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_LAIProcess(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_LAIProcess}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "LAIProcess", - 0, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_A, __pyx_k_A, sizeof(__pyx_k_A), 0, 0, 1, 1}, - {&__pyx_n_s_B, __pyx_k_B, sizeof(__pyx_k_B), 0, 0, 1, 1}, - {&__pyx_n_s_C, __pyx_k_C, sizeof(__pyx_k_C), 0, 0, 1, 1}, - {&__pyx_n_s_D, __pyx_k_D, sizeof(__pyx_k_D), 0, 0, 1, 1}, - {&__pyx_n_s_FVC, __pyx_k_FVC, sizeof(__pyx_k_FVC), 0, 0, 1, 1}, - {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, - {&__pyx_n_s_LAIProcess, __pyx_k_LAIProcess, sizeof(__pyx_k_LAIProcess), 0, 0, 1, 1}, - {&__pyx_kp_s_LAIProcess_pyx, __pyx_k_LAIProcess_pyx, sizeof(__pyx_k_LAIProcess_pyx), 0, 0, 1, 0}, - {&__pyx_n_s_M, __pyx_k_M, sizeof(__pyx_k_M), 0, 0, 1, 1}, - {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1}, - {&__pyx_n_s_V_lai, __pyx_k_V_lai, sizeof(__pyx_k_V_lai), 0, 0, 1, 1}, - {&__pyx_n_s_WMCModel, __pyx_k_WMCModel, sizeof(__pyx_k_WMCModel), 0, 0, 1, 1}, - {&__pyx_n_s_X, __pyx_k_X, sizeof(__pyx_k_X), 0, 0, 1, 1}, - {&__pyx_n_s_X0, __pyx_k_X0, sizeof(__pyx_k_X0), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1}, - {&__pyx_n_s_csv_sigma, __pyx_k_csv_sigma, sizeof(__pyx_k_csv_sigma), 0, 0, 1, 1}, - {&__pyx_n_s_dpi, __pyx_k_dpi, sizeof(__pyx_k_dpi), 0, 0, 1, 1}, - {&__pyx_n_s_draw_flag, __pyx_k_draw_flag, sizeof(__pyx_k_draw_flag), 0, 0, 1, 1}, - {&__pyx_n_s_eqs, __pyx_k_eqs, sizeof(__pyx_k_eqs), 0, 0, 1, 1}, - {&__pyx_kp_s_equation_err, __pyx_k_equation_err, sizeof(__pyx_k_equation_err), 0, 0, 1, 0}, - {&__pyx_n_s_err, __pyx_k_err, sizeof(__pyx_k_err), 0, 0, 1, 1}, - {&__pyx_n_s_err_f, __pyx_k_err_f, sizeof(__pyx_k_err_f), 0, 0, 1, 1}, - {&__pyx_n_s_err_lai, __pyx_k_err_lai, sizeof(__pyx_k_err_lai), 0, 0, 1, 1}, - {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1}, - {&__pyx_n_s_exp_gamma, __pyx_k_exp_gamma, sizeof(__pyx_k_exp_gamma), 0, 0, 1, 1}, - {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1}, - {&__pyx_n_s_f_veg, __pyx_k_f_veg, sizeof(__pyx_k_f_veg), 0, 0, 1, 1}, - {&__pyx_n_s_getLogger, __pyx_k_getLogger, sizeof(__pyx_k_getLogger), 0, 0, 1, 1}, - {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_inc_angle, __pyx_k_inc_angle, sizeof(__pyx_k_inc_angle), 0, 0, 1, 1}, - {&__pyx_n_s_inc_tiff, __pyx_k_inc_tiff, sizeof(__pyx_k_inc_tiff), 0, 0, 1, 1}, - {&__pyx_n_s_lai, __pyx_k_lai, sizeof(__pyx_k_lai), 0, 0, 1, 1}, - {&__pyx_n_s_lai_X0, __pyx_k_lai_X0, sizeof(__pyx_k_lai_X0), 0, 0, 1, 1}, - {&__pyx_n_s_lai_waiter_inc_sigma_item, __pyx_k_lai_waiter_inc_sigma_item, sizeof(__pyx_k_lai_waiter_inc_sigma_item), 0, 0, 1, 1}, - {&__pyx_n_s_lai_waiter_inc_sigma_list, __pyx_k_lai_waiter_inc_sigma_list, sizeof(__pyx_k_lai_waiter_inc_sigma_list), 0, 0, 1, 1}, - {&__pyx_n_s_lai_water_inc_sigma_item, __pyx_k_lai_water_inc_sigma_item, sizeof(__pyx_k_lai_water_inc_sigma_item), 0, 0, 1, 1}, - {&__pyx_n_s_lai_water_inc_sigma_list, __pyx_k_lai_water_inc_sigma_list, sizeof(__pyx_k_lai_water_inc_sigma_list), 0, 0, 1, 1}, - {&__pyx_n_s_leastsq, __pyx_k_leastsq, sizeof(__pyx_k_leastsq), 0, 0, 1, 1}, - {&__pyx_n_s_logger, __pyx_k_logger, sizeof(__pyx_k_logger), 0, 0, 1, 1}, - {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_matplotlib, __pyx_k_matplotlib, sizeof(__pyx_k_matplotlib), 0, 0, 1, 1}, - {&__pyx_n_s_mylog, __pyx_k_mylog, sizeof(__pyx_k_mylog), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_nan, __pyx_k_nan, sizeof(__pyx_k_nan), 0, 0, 1, 1}, - {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, - {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, - {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0}, - {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0}, - {&__pyx_n_s_param_arr, __pyx_k_param_arr, sizeof(__pyx_k_param_arr), 0, 0, 1, 1}, - {&__pyx_n_s_params_X0, __pyx_k_params_X0, sizeof(__pyx_k_params_X0), 0, 0, 1, 1}, - {&__pyx_n_s_plt, __pyx_k_plt, sizeof(__pyx_k_plt), 0, 0, 1, 1}, - {&__pyx_n_s_processs_WMCModel, __pyx_k_processs_WMCModel, sizeof(__pyx_k_processs_WMCModel), 0, 0, 1, 1}, - {&__pyx_n_s_processs_WMCModel_locals_f, __pyx_k_processs_WMCModel_locals_f, sizeof(__pyx_k_processs_WMCModel_locals_f), 0, 0, 1, 1}, - {&__pyx_n_s_pyplot, __pyx_k_pyplot, sizeof(__pyx_k_pyplot), 0, 0, 1, 1}, - {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1}, - {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1}, - {&__pyx_n_s_sample_code, __pyx_k_sample_code, sizeof(__pyx_k_sample_code), 0, 0, 1, 1}, - {&__pyx_n_s_sample_inc, __pyx_k_sample_inc, sizeof(__pyx_k_sample_inc), 0, 0, 1, 1}, - {&__pyx_n_s_sample_lai, __pyx_k_sample_lai, sizeof(__pyx_k_sample_lai), 0, 0, 1, 1}, - {&__pyx_n_s_sample_lat, __pyx_k_sample_lat, sizeof(__pyx_k_sample_lat), 0, 0, 1, 1}, - {&__pyx_n_s_sample_lon, __pyx_k_sample_lon, sizeof(__pyx_k_sample_lon), 0, 0, 1, 1}, - {&__pyx_n_s_sample_sigma, __pyx_k_sample_sigma, sizeof(__pyx_k_sample_sigma), 0, 0, 1, 1}, - {&__pyx_n_s_sample_soil, __pyx_k_sample_soil, sizeof(__pyx_k_sample_soil), 0, 0, 1, 1}, - {&__pyx_n_s_sample_time, __pyx_k_sample_time, sizeof(__pyx_k_sample_time), 0, 0, 1, 1}, - {&__pyx_n_s_savefig, __pyx_k_savefig, sizeof(__pyx_k_savefig), 0, 0, 1, 1}, - {&__pyx_n_s_scatter, __pyx_k_scatter, sizeof(__pyx_k_scatter), 0, 0, 1, 1}, - {&__pyx_n_s_scipy_optimize, __pyx_k_scipy_optimize, sizeof(__pyx_k_scipy_optimize), 0, 0, 1, 1}, - {&__pyx_n_s_show, __pyx_k_show, sizeof(__pyx_k_show), 0, 0, 1, 1}, - {&__pyx_n_s_sigma, __pyx_k_sigma, sizeof(__pyx_k_sigma), 0, 0, 1, 1}, - {&__pyx_n_s_sigma_soil, __pyx_k_sigma_soil, sizeof(__pyx_k_sigma_soil), 0, 0, 1, 1}, - {&__pyx_n_s_sigma_tiff, __pyx_k_sigma_tiff, sizeof(__pyx_k_sigma_tiff), 0, 0, 1, 1}, - {&__pyx_n_s_sigma_veg, __pyx_k_sigma_veg, sizeof(__pyx_k_sigma_veg), 0, 0, 1, 1}, - {&__pyx_n_s_soil_water, __pyx_k_soil_water, sizeof(__pyx_k_soil_water), 0, 0, 1, 1}, - {&__pyx_n_s_soil_water_tiff, __pyx_k_soil_water_tiff, sizeof(__pyx_k_soil_water_tiff), 0, 0, 1, 1}, - {&__pyx_n_s_temp_err, __pyx_k_temp_err, sizeof(__pyx_k_temp_err), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_test_WMCModel, __pyx_k_test_WMCModel, sizeof(__pyx_k_test_WMCModel), 0, 0, 1, 1}, - {&__pyx_n_s_test_WMCModel_locals_f, __pyx_k_test_WMCModel_locals_f, sizeof(__pyx_k_test_WMCModel_locals_f), 0, 0, 1, 1}, - {&__pyx_n_s_test_err_image_path, __pyx_k_test_err_image_path, sizeof(__pyx_k_test_err_image_path), 0, 0, 1, 1}, - {&__pyx_n_s_title, __pyx_k_title, sizeof(__pyx_k_title), 0, 0, 1, 1}, - {&__pyx_n_s_train_WMCmodel, __pyx_k_train_WMCmodel, sizeof(__pyx_k_train_WMCmodel), 0, 0, 1, 1}, - {&__pyx_n_s_train_WMCmodel_locals_f, __pyx_k_train_WMCmodel_locals_f, sizeof(__pyx_k_train_WMCmodel_locals_f), 0, 0, 1, 1}, - {&__pyx_n_s_train_err_image_path, __pyx_k_train_err_image_path, sizeof(__pyx_k_train_err_image_path), 0, 0, 1, 1}, - {&__pyx_n_s_x_arr, __pyx_k_x_arr, sizeof(__pyx_k_x_arr), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 947, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "LAIProcess.pyx":48 - * lai_waiter_inc_sigma_list (list): - * """ - * def f(X): # <<<<<<<<<<<<<< - * eqs=[] - * for lai_water_inc_sigma_item in lai_water_inc_sigma_list: - */ - __pyx_tuple_ = PyTuple_Pack(8, __pyx_n_s_X, __pyx_n_s_eqs, __pyx_n_s_lai_water_inc_sigma_item, __pyx_n_s_sample_lai, __pyx_n_s_sample_sigma, __pyx_n_s_sample_soil, __pyx_n_s_sample_inc, __pyx_n_s_FVC); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple_, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_f, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 48, __pyx_L1_error) - - /* "LAIProcess.pyx":104 - * for lai_waiter_inc_sigma_item in lai_waiter_inc_sigma_list: - * sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=lai_waiter_inc_sigma_item - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,sample_soil,sample_inc,csv_sigma)] - */ - __pyx_tuple__3 = PyTuple_Pack(3, __pyx_n_s_X, __pyx_n_s_lai, __pyx_n_s_eqs); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 104, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_f, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 104, __pyx_L1_error) - - /* "LAIProcess.pyx":134 - * if(sigma<0 ): - * return np.nan - * def f(X): # <<<<<<<<<<<<<< - * lai=X[0] - * eqs=[WMCModel(param_arr,lai,soil_water,inc_angle,sigma )] - */ - __pyx_tuple__5 = PyTuple_Pack(3, __pyx_n_s_X, __pyx_n_s_lai, __pyx_n_s_eqs); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 134, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__5); - __Pyx_GIVEREF(__pyx_tuple__5); - __pyx_codeobj__6 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__5, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_f, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__6)) __PYX_ERR(0, 134, __pyx_L1_error) - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":947 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(1, 947, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__7); - __Pyx_GIVEREF(__pyx_tuple__7); - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":953 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(1, 953, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__8); - __Pyx_GIVEREF(__pyx_tuple__8); - - /* "LAIProcess.pyx":12 - * import random - * import logging - * logger = logging.getLogger("mylog") # <<<<<<<<<<<<<< - * - * - */ - __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_s_mylog); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__9); - __Pyx_GIVEREF(__pyx_tuple__9); - - /* "LAIProcess.pyx":15 - * - * - * def WMCModel(param_arr,sample_lai,sample_soil,sample_inc,sample_sigma): # <<<<<<<<<<<<<< - * """ WMC - * - */ - __pyx_tuple__10 = PyTuple_Pack(17, __pyx_n_s_param_arr, __pyx_n_s_sample_lai, __pyx_n_s_sample_soil, __pyx_n_s_sample_inc, __pyx_n_s_sample_sigma, __pyx_n_s_A, __pyx_n_s_B, __pyx_n_s_C, __pyx_n_s_D, __pyx_n_s_M, __pyx_n_s_N, __pyx_n_s_V_lai, __pyx_n_s_exp_gamma, __pyx_n_s_sigma_soil, __pyx_n_s_sigma_veg, __pyx_n_s_f_veg, __pyx_n_s_result); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__10); - __Pyx_GIVEREF(__pyx_tuple__10); - __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(5, 0, 17, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_WMCModel, 15, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 15, __pyx_L1_error) - - /* "LAIProcess.pyx":42 - * - * - * def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - __pyx_tuple__12 = PyTuple_Pack(12, __pyx_n_s_lai_water_inc_sigma_list, __pyx_n_s_params_X0, __pyx_n_s_train_err_image_path, __pyx_n_s_draw_flag, __pyx_n_s_f, __pyx_n_s_f, __pyx_n_s_X0, __pyx_n_s_h, __pyx_n_s_err_f, __pyx_n_s_x_arr, __pyx_n_s_plt, __pyx_n_s_lai_waiter_inc_sigma_item); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__12); - __Pyx_GIVEREF(__pyx_tuple__12); - __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(4, 0, 12, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_train_WMCmodel, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 42, __pyx_L1_error) - - /* "LAIProcess.pyx":82 - * return h[0] - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - __pyx_tuple__14 = PyTuple_Pack(25, __pyx_n_s_lai_waiter_inc_sigma_list, __pyx_n_s_param_arr, __pyx_n_s_lai_X0, __pyx_n_s_test_err_image_path, __pyx_n_s_draw_flag, __pyx_n_s_err, __pyx_n_s_err_f, __pyx_n_s_x_arr, __pyx_n_s_err_lai, __pyx_n_s_lai_waiter_inc_sigma_item, __pyx_n_s_sample_time, __pyx_n_s_sample_code, __pyx_n_s_sample_lon, __pyx_n_s_sample_lat, __pyx_n_s_sample_lai, __pyx_n_s_csv_sigma, __pyx_n_s_sample_soil, __pyx_n_s_sample_inc, __pyx_n_s_sample_sigma, __pyx_n_s_f, __pyx_n_s_f, __pyx_n_s_X0, __pyx_n_s_h, __pyx_n_s_temp_err, __pyx_n_s_plt); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__14); - __Pyx_GIVEREF(__pyx_tuple__14); - __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(5, 0, 25, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_test_WMCModel, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 82, __pyx_L1_error) - - /* "LAIProcess.pyx":130 - * return err - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): # <<<<<<<<<<<<<< - * - * if(sigma<0 ): - */ - __pyx_tuple__16 = PyTuple_Pack(8, __pyx_n_s_param_arr, __pyx_n_s_lai_X0, __pyx_n_s_sigma, __pyx_n_s_inc_angle, __pyx_n_s_soil_water, __pyx_n_s_f, __pyx_n_s_f, __pyx_n_s_h); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__16); - __Pyx_GIVEREF(__pyx_tuple__16); - __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(5, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_LAIProcess_pyx, __pyx_n_s_processs_WMCModel, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_600 = PyInt_FromLong(600); if (unlikely(!__pyx_int_600)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_neg_2 = PyInt_FromLong(-2); if (unlikely(!__pyx_int_neg_2)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - if (PyType_Ready(&__pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel.tp_dictoffset && __pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype_10LAIProcess___pyx_scope_struct__train_WMCmodel = &__pyx_type_10LAIProcess___pyx_scope_struct__train_WMCmodel; - if (PyType_Ready(&__pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel) < 0) __PYX_ERR(0, 82, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel.tp_dictoffset && __pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype_10LAIProcess___pyx_scope_struct_1_test_WMCModel = &__pyx_type_10LAIProcess___pyx_scope_struct_1_test_WMCModel; - if (PyType_Ready(&__pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel) < 0) __PYX_ERR(0, 130, __pyx_L1_error) - #if PY_VERSION_HEX < 0x030800B1 - __pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel.tp_print = 0; - #endif - if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel.tp_dictoffset && __pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel.tp_getattro == PyObject_GenericGetAttr)) { - __pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict; - } - __pyx_ptype_10LAIProcess___pyx_scope_struct_2_processs_WMCModel = &__pyx_type_10LAIProcess___pyx_scope_struct_2_processs_WMCModel; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 200, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 223, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 227, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 239, __pyx_L1_error) - __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_generic) __PYX_ERR(1, 771, __pyx_L1_error) - __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_number) __PYX_ERR(1, 773, __pyx_L1_error) - __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_integer) __PYX_ERR(1, 775, __pyx_L1_error) - __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 777, __pyx_L1_error) - __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 779, __pyx_L1_error) - __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 781, __pyx_L1_error) - __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_floating) __PYX_ERR(1, 783, __pyx_L1_error) - __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 785, __pyx_L1_error) - __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 787, __pyx_L1_error) - __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_character) __PYX_ERR(1, 789, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#elif PY_MAJOR_VERSION < 3 -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" void -#else -#define __Pyx_PyMODINIT_FUNC void -#endif -#else -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyObject * -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initLAIProcess(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initLAIProcess(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_LAIProcess(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_LAIProcess(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { - #if PY_VERSION_HEX >= 0x030700A1 - static PY_INT64_T main_interpreter_id = -1; - PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); - if (main_interpreter_id == -1) { - main_interpreter_id = current_id; - return (unlikely(current_id == -1)) ? -1 : 0; - } else if (unlikely(main_interpreter_id != current_id)) - #else - static PyInterpreterState *main_interpreter = NULL; - PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; - if (!main_interpreter) { - main_interpreter = current_interpreter; - } else if (unlikely(main_interpreter != current_interpreter)) - #endif - { - PyErr_SetString( - PyExc_ImportError, - "Interpreter change detected - this module can only be loaded into one interpreter per process."); - return -1; - } - return 0; -} -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - if (allow_none || value != Py_None) { - result = PyDict_SetItemString(moddict, to_name, value); - } - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__Pyx_check_single_interpreter()) - return NULL; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static CYTHON_SMALL_CODE int __pyx_pymod_exec_LAIProcess(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m) { - if (__pyx_m == __pyx_pyinit_module) return 0; - PyErr_SetString(PyExc_RuntimeError, "Module 'LAIProcess' has already been imported. Re-initialisation is not supported."); - return -1; - } - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_LAIProcess(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pxy_PyFrame_Initialize_Offsets - __Pxy_PyFrame_Initialize_Offsets(); - #endif - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - PyEval_InitThreads(); - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("LAIProcess", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_b); - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_cython_runtime); - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_LAIProcess) { - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "LAIProcess")) { - if (unlikely(PyDict_SetItemString(modules, "LAIProcess", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "LAIProcess.pyx":6 - * import cython - * cimport cython # - * import numpy as np # <<<<<<<<<<<<<< - * cimport numpy as np - * from libc.math cimport pi - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "LAIProcess.pyx":9 - * cimport numpy as np - * from libc.math cimport pi - * from scipy.optimize import leastsq # <<<<<<<<<<<<<< - * import random - * import logging - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_leastsq); - __Pyx_GIVEREF(__pyx_n_s_leastsq); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_leastsq); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_optimize, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_leastsq); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_leastsq, __pyx_t_1) < 0) __PYX_ERR(0, 9, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":10 - * from libc.math cimport pi - * from scipy.optimize import leastsq - * import random # <<<<<<<<<<<<<< - * import logging - * logger = logging.getLogger("mylog") - */ - __pyx_t_2 = __Pyx_Import(__pyx_n_s_random, 0, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_random, __pyx_t_2) < 0) __PYX_ERR(0, 10, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":11 - * from scipy.optimize import leastsq - * import random - * import logging # <<<<<<<<<<<<<< - * logger = logging.getLogger("mylog") - * - */ - __pyx_t_2 = __Pyx_Import(__pyx_n_s_logging, 0, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":12 - * import random - * import logging - * logger = logging.getLogger("mylog") # <<<<<<<<<<<<<< - * - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_logging); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (PyDict_SetItem(__pyx_d, __pyx_n_s_logger, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":15 - * - * - * def WMCModel(param_arr,sample_lai,sample_soil,sample_inc,sample_sigma): # <<<<<<<<<<<<<< - * """ WMC - * - */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10LAIProcess_1WMCModel, NULL, __pyx_n_s_LAIProcess); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_WMCModel, __pyx_t_2) < 0) __PYX_ERR(0, 15, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":42 - * - * - * def train_WMCmodel(lai_water_inc_sigma_list,params_X0,train_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10LAIProcess_3train_WMCmodel, NULL, __pyx_n_s_LAIProcess); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_train_WMCmodel, __pyx_t_2) < 0) __PYX_ERR(0, 42, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":82 - * return h[0] - * - * def test_WMCModel(lai_waiter_inc_sigma_list,param_arr,lai_X0,test_err_image_path,draw_flag=True): # <<<<<<<<<<<<<< - * """ - * - */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10LAIProcess_5test_WMCModel, NULL, __pyx_n_s_LAIProcess); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test_WMCModel, __pyx_t_2) < 0) __PYX_ERR(0, 82, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":130 - * return err - * - * def processs_WMCModel(param_arr,lai_X0,sigma,inc_angle,soil_water): # <<<<<<<<<<<<<< - * - * if(sigma<0 ): - */ - __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_10LAIProcess_7processs_WMCModel, NULL, __pyx_n_s_LAIProcess); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_processs_WMCModel, __pyx_t_2) < 0) __PYX_ERR(0, 130, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "LAIProcess.pyx":1 - * # # <<<<<<<<<<<<<< - * # - * # - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init LAIProcess", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - Py_CLEAR(__pyx_m); - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init LAIProcess"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule(modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, "RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* RaiseArgTupleInvalid */ -static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ -static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* RaiseTooManyValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { - PyErr_Format(PyExc_ValueError, - "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); -} - -/* RaiseNeedMoreValuesToUnpack */ -static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { - PyErr_Format(PyExc_ValueError, - "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", - index, (index == 1) ? "" : "s"); -} - -/* IterFinish */ -static CYTHON_INLINE int __Pyx_IterFinish(void) { -#if CYTHON_FAST_THREAD_STATE - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* exc_type = tstate->curexc_type; - if (unlikely(exc_type)) { - if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) { - PyObject *exc_value, *exc_tb; - exc_value = tstate->curexc_value; - exc_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; - Py_DECREF(exc_type); - Py_XDECREF(exc_value); - Py_XDECREF(exc_tb); - return 0; - } else { - return -1; - } - } - return 0; -#else - if (unlikely(PyErr_Occurred())) { - if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { - PyErr_Clear(); - return 0; - } else { - return -1; - } - } - return 0; -#endif -} - -/* UnpackItemEndCheck */ -static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { - if (unlikely(retval)) { - Py_DECREF(retval); - __Pyx_RaiseTooManyValuesError(expected); - return -1; - } else { - return __Pyx_IterFinish(); - } - return 0; -} - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* PyDictVersioning */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { - PyObject **dictptr = NULL; - Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; - if (offset) { -#if CYTHON_COMPILING_IN_CPYTHON - dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); -#else - dictptr = _PyObject_GetDictPtr(obj); -#endif - } - return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; -} -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) - return 0; - return obj_dict_version == __Pyx_get_object_dict_version(obj); -} -#endif - -/* GetModuleGlobalName */ -#if CYTHON_USE_DICT_VERSIONS -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) -#else -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) -#endif -{ - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } else if (unlikely(PyErr_Occurred())) { - return NULL; - } -#else - result = PyDict_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } - PyErr_Clear(); -#endif - return __Pyx_GetBuiltinName(name); -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = Py_TYPE(func)->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCall2Args */ -static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { - PyObject *args, *result = NULL; - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {arg1, arg2}; - return __Pyx_PyFunction_FastCall(function, args, 2); - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {arg1, arg2}; - return __Pyx_PyCFunction_FastCall(function, args, 2); - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); -done: - return result; -} - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (__Pyx_PyFastCFunction_Check(func)) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyIntBinop */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { - (void)inplace; - (void)zerodivision_check; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op2))) { - const long a = intval; - long x; - long b = PyInt_AS_LONG(op2); - x = (long)((unsigned long)a - b); - if (likely((x^a) >= 0 || (x^~b) >= 0)) - return PyInt_FromLong(x); - return PyLong_Type.tp_as_number->nb_subtract(op1, op2); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op2))) { - const long a = intval; - long b, x; -#ifdef HAVE_LONG_LONG - const PY_LONG_LONG lla = intval; - PY_LONG_LONG llb, llx; -#endif - const digit* digits = ((PyLongObject*)op2)->ob_digit; - const Py_ssize_t size = Py_SIZE(op2); - if (likely(__Pyx_sst_abs(size) <= 1)) { - b = likely(size) ? digits[0] : 0; - if (size == -1) b = -b; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); - } - } - x = a - b; - return PyLong_FromLong(x); -#ifdef HAVE_LONG_LONG - long_long: - llx = lla - llb; - return PyLong_FromLongLong(llx); -#endif - - - } - #endif - if (PyFloat_CheckExact(op2)) { - const long a = intval; - double b = PyFloat_AS_DOUBLE(op2); - double result; - PyFPE_START_PROTECT("subtract", return NULL) - result = ((double)a) - (double)b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); - } - return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); -} -#endif - -/* None */ -static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { - PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); -} - -/* GetItemInt */ -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* FetchCommonType */ -static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { - PyObject* fake_module; - PyTypeObject* cached_type = NULL; - fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); - if (!fake_module) return NULL; - Py_INCREF(fake_module); - cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); - if (cached_type) { - if (!PyType_Check((PyObject*)cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", - type->tp_name); - goto bad; - } - if (cached_type->tp_basicsize != type->tp_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - type->tp_name); - goto bad; - } - } else { - if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; - PyErr_Clear(); - if (PyType_Ready(type) < 0) goto bad; - if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) - goto bad; - Py_INCREF(type); - cached_type = type; - } -done: - Py_DECREF(fake_module); - return cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CythonFunctionShared */ -#include -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure) -{ - if (unlikely(op->func_doc == NULL)) { - if (op->func.m_ml->ml_doc) { -#if PY_MAJOR_VERSION >= 3 - op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc); -#else - op->func_doc = PyString_FromString(op->func.m_ml->ml_doc); -#endif - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -{ - PyObject *tmp = op->func_doc; - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - op->func_doc = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -{ - if (unlikely(op->func_name == NULL)) { -#if PY_MAJOR_VERSION >= 3 - op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name); -#else - op->func_name = PyString_InternFromString(op->func.m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) -#else - if (unlikely(value == NULL || !PyString_Check(value))) -#endif - { - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - tmp = op->func_name; - Py_INCREF(value); - op->func_name = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -{ - Py_INCREF(op->func_qualname); - return op->func_qualname; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -{ - PyObject *tmp; -#if PY_MAJOR_VERSION >= 3 - if (unlikely(value == NULL || !PyUnicode_Check(value))) -#else - if (unlikely(value == NULL || !PyString_Check(value))) -#endif - { - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - tmp = op->func_qualname; - Py_INCREF(value); - op->func_qualname = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure) -{ - PyObject *self; - self = m->func_closure; - if (self == NULL) - self = Py_None; - Py_INCREF(self); - return self; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context) -{ - PyObject *tmp; - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - tmp = op->func_dict; - Py_INCREF(value); - op->func_dict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -{ - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -{ - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyTuple_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_tuple; - op->defaults_tuple = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { - PyObject* tmp; - if (!value) { - value = Py_None; - } else if (value != Py_None && !PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - Py_INCREF(value); - tmp = op->defaults_kwdict; - op->defaults_kwdict = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) { - PyObject* tmp; - if (!value || value == Py_None) { - value = NULL; - } else if (!PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - tmp = op->func_annotations; - op->func_annotations = value; - Py_XDECREF(tmp); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0}, - {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { - {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0}, - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) -{ -#if PY_MAJOR_VERSION >= 3 - Py_INCREF(m->func_qualname); - return m->func_qualname; -#else - return PyString_FromString(m->func.m_ml->ml_name); -#endif -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if PY_VERSION_HEX < 0x030500A0 -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - if (unlikely(op == NULL)) - return NULL; - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - op->func.m_ml = ml; - op->func.m_self = (PyObject *) op; - Py_XINCREF(closure); - op->func_closure = closure; - Py_XINCREF(module); - op->func.m_module = module; - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - op->func_classobj = NULL; - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults_pyobjects = 0; - op->defaults_size = 0; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); - Py_CLEAR(m->func.m_module); - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - Py_CLEAR(m->func_classobj); - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_XDECREF(pydefaults[i]); - PyObject_Free(m->defaults); - m->defaults = NULL; - } - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - PyObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - Py_VISIT(m->func_closure); - Py_VISIT(m->func.m_module); - Py_VISIT(m->func_dict); - Py_VISIT(m->func_name); - Py_VISIT(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - Py_VISIT(m->func_code); - Py_VISIT(m->func_classobj); - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - if (m->defaults) { - PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m); - int i; - for (i = 0; i < m->defaults_pyobjects; i++) - Py_VISIT(pydefaults[i]); - } - return 0; -} -static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type) -{ -#if PY_MAJOR_VERSION < 3 - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) { - Py_INCREF(func); - return func; - } - if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) { - if (type == NULL) - type = (PyObject *)(Py_TYPE(obj)); - return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type))); - } - if (obj == Py_None) - obj = NULL; -#endif - return __Pyx_PyMethod_New(func, obj, type); -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ -#if PY_MAJOR_VERSION >= 3 - return PyUnicode_FromFormat("", - op->func_qualname, (void *)op); -#else - return PyString_FromFormat("", - PyString_AsString(op->func_qualname), (void *)op); -#endif -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - Py_ssize_t size; - switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 0)) - return (*meth)(self, NULL); - PyErr_Format(PyExc_TypeError, - "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - size = PyTuple_GET_SIZE(arg); - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)", - f->m_ml->ml_name, size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags in " - "__Pyx_CyFunction_Call. METH_OLDARGS is no " - "longer supported!"); - return NULL; - } - PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", - f->m_ml->ml_name); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw); -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - argc = PyTuple_GET_SIZE(args); - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -static PyTypeObject __pyx_CyFunctionType_type = { - PyVarObject_HEAD_INIT(0, 0) - "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - (destructor) __Pyx_CyFunction_dealloc, - 0, - 0, - 0, -#if PY_MAJOR_VERSION < 3 - 0, -#else - 0, -#endif - (reprfunc) __Pyx_CyFunction_repr, - 0, - 0, - 0, - 0, - __Pyx_CyFunction_CallAsMethod, - 0, - 0, - 0, - 0, - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, - 0, - (traverseproc) __Pyx_CyFunction_traverse, - (inquiry) __Pyx_CyFunction_clear, - 0, -#if PY_VERSION_HEX < 0x030500A0 - offsetof(__pyx_CyFunctionObject, func_weakreflist), -#else - offsetof(PyCFunctionObject, m_weakreflist), -#endif - 0, - 0, - __pyx_CyFunction_methods, - __pyx_CyFunction_members, - __pyx_CyFunction_getsets, - 0, - 0, - __Pyx_CyFunction_descr_get, - 0, - offsetof(__pyx_CyFunctionObject, func_dict), - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, -#if PY_VERSION_HEX >= 0x030400a1 - 0, -#endif -#if PY_VERSION_HEX >= 0x030800b1 - 0, -#endif -#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 - 0, -#endif -}; -static int __pyx_CyFunction_init(void) { - __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); - if (unlikely(__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_Malloc(size); - if (unlikely(!m->defaults)) - return PyErr_NoMemory(); - memset(m->defaults, 0, size); - m->defaults_pyobjects = pyobjects; - m->defaults_size = size; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - -/* CythonFunction */ -static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - PyObject *op = __Pyx_CyFunction_Init( - PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType), - ml, flags, qualname, closure, module, globals, code - ); - if (likely(op)) { - PyObject_GC_Track(op); - } - return op; -} - -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* PyObjectCallNoArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) -#else - if (likely(PyCFunction_Check(func))) -#endif - { - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* IsLittleEndian */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) -{ - union { - uint32_t u32; - uint8_t u8[4]; - } S; - S.u32 = 0x01020304; - return S.u8[0] == 4; -} - -/* BufferFormatCheck */ -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type) { - stack[0].field = &ctx->root; - stack[0].parent_offset = 0; - ctx->root.type = type; - ctx->root.name = "buffer dtype"; - ctx->root.offset = 0; - ctx->head = stack; - ctx->head->field = &ctx->root; - ctx->fmt_offset = 0; - ctx->head->parent_offset = 0; - ctx->new_packmode = '@'; - ctx->enc_packmode = '@'; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->is_complex = 0; - ctx->is_valid_array = 0; - ctx->struct_alignment = 0; - while (type->typegroup == 'S') { - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = 0; - type = type->fields->type; - } -} -static int __Pyx_BufFmt_ParseNumber(const char** ts) { - int count; - const char* t = *ts; - if (*t < '0' || *t > '9') { - return -1; - } else { - count = *t++ - '0'; - while (*t >= '0' && *t <= '9') { - count *= 10; - count += *t++ - '0'; - } - } - *ts = t; - return count; -} -static int __Pyx_BufFmt_ExpectNumber(const char **ts) { - int number = __Pyx_BufFmt_ParseNumber(ts); - if (number == -1) - PyErr_Format(PyExc_ValueError,\ - "Does not understand character buffer dtype format string ('%c')", **ts); - return number; -} -static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { - PyErr_Format(PyExc_ValueError, - "Unexpected format string character: '%c'", ch); -} -static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { - switch (ch) { - case '?': return "'bool'"; - case 'c': return "'char'"; - case 'b': return "'signed char'"; - case 'B': return "'unsigned char'"; - case 'h': return "'short'"; - case 'H': return "'unsigned short'"; - case 'i': return "'int'"; - case 'I': return "'unsigned int'"; - case 'l': return "'long'"; - case 'L': return "'unsigned long'"; - case 'q': return "'long long'"; - case 'Q': return "'unsigned long long'"; - case 'f': return (is_complex ? "'complex float'" : "'float'"); - case 'd': return (is_complex ? "'complex double'" : "'double'"); - case 'g': return (is_complex ? "'complex long double'" : "'long double'"); - case 'T': return "a struct"; - case 'O': return "Python object"; - case 'P': return "a pointer"; - case 's': case 'p': return "a string"; - case 0: return "end"; - default: return "unparseable format string"; - } -} -static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return 2; - case 'i': case 'I': case 'l': case 'L': return 4; - case 'q': case 'Q': return 8; - case 'f': return (is_complex ? 8 : 4); - case 'd': return (is_complex ? 16 : 8); - case 'g': { - PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); - return 0; - } - case 'O': case 'P': return sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(short); - case 'i': case 'I': return sizeof(int); - case 'l': case 'L': return sizeof(long); - #ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(PY_LONG_LONG); - #endif - case 'f': return sizeof(float) * (is_complex ? 2 : 1); - case 'd': return sizeof(double) * (is_complex ? 2 : 1); - case 'g': return sizeof(long double) * (is_complex ? 2 : 1); - case 'O': case 'P': return sizeof(void*); - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -typedef struct { char c; short x; } __Pyx_st_short; -typedef struct { char c; int x; } __Pyx_st_int; -typedef struct { char c; long x; } __Pyx_st_long; -typedef struct { char c; float x; } __Pyx_st_float; -typedef struct { char c; double x; } __Pyx_st_double; -typedef struct { char c; long double x; } __Pyx_st_longdouble; -typedef struct { char c; void *x; } __Pyx_st_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_st_float) - sizeof(float); - case 'd': return sizeof(__Pyx_st_double) - sizeof(double); - case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -/* These are for computing the padding at the end of the struct to align - on the first member of the struct. This will probably the same as above, - but we don't have any guarantees. - */ -typedef struct { short x; char c; } __Pyx_pad_short; -typedef struct { int x; char c; } __Pyx_pad_int; -typedef struct { long x; char c; } __Pyx_pad_long; -typedef struct { float x; char c; } __Pyx_pad_float; -typedef struct { double x; char c; } __Pyx_pad_double; -typedef struct { long double x; char c; } __Pyx_pad_longdouble; -typedef struct { void *x; char c; } __Pyx_pad_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); - case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); - case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { - switch (ch) { - case 'c': - return 'H'; - case 'b': case 'h': case 'i': - case 'l': case 'q': case 's': case 'p': - return 'I'; - case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': - return 'U'; - case 'f': case 'd': case 'g': - return (is_complex ? 'C' : 'R'); - case 'O': - return 'O'; - case 'P': - return 'P'; - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { - if (ctx->head == NULL || ctx->head->field == &ctx->root) { - const char* expected; - const char* quote; - if (ctx->head == NULL) { - expected = "end"; - quote = ""; - } else { - expected = ctx->head->field->type->name; - quote = "'"; - } - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected %s%s%s but got %s", - quote, expected, quote, - __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); - } else { - __Pyx_StructField* field = ctx->head->field; - __Pyx_StructField* parent = (ctx->head - 1)->field; - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", - field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), - parent->type->name, field->name); - } -} -static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { - char group; - size_t size, offset, arraysize = 1; - if (ctx->enc_type == 0) return 0; - if (ctx->head->field->type->arraysize[0]) { - int i, ndim = 0; - if (ctx->enc_type == 's' || ctx->enc_type == 'p') { - ctx->is_valid_array = ctx->head->field->type->ndim == 1; - ndim = 1; - if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { - PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %zu", - ctx->head->field->type->arraysize[0], ctx->enc_count); - return -1; - } - } - if (!ctx->is_valid_array) { - PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", - ctx->head->field->type->ndim, ndim); - return -1; - } - for (i = 0; i < ctx->head->field->type->ndim; i++) { - arraysize *= ctx->head->field->type->arraysize[i]; - } - ctx->is_valid_array = 0; - ctx->enc_count = 1; - } - group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); - do { - __Pyx_StructField* field = ctx->head->field; - __Pyx_TypeInfo* type = field->type; - if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { - size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); - } else { - size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); - } - if (ctx->enc_packmode == '@') { - size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); - size_t align_mod_offset; - if (align_at == 0) return -1; - align_mod_offset = ctx->fmt_offset % align_at; - if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; - if (ctx->struct_alignment == 0) - ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, - ctx->is_complex); - } - if (type->size != size || type->typegroup != group) { - if (type->typegroup == 'C' && type->fields != NULL) { - size_t parent_offset = ctx->head->parent_offset + field->offset; - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = parent_offset; - continue; - } - if ((type->typegroup == 'H' || group == 'H') && type->size == size) { - } else { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - } - offset = ctx->head->parent_offset + field->offset; - if (ctx->fmt_offset != offset) { - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", - (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); - return -1; - } - ctx->fmt_offset += size; - if (arraysize) - ctx->fmt_offset += (arraysize - 1) * size; - --ctx->enc_count; - while (1) { - if (field == &ctx->root) { - ctx->head = NULL; - if (ctx->enc_count != 0) { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - break; - } - ctx->head->field = ++field; - if (field->type == NULL) { - --ctx->head; - field = ctx->head->field; - continue; - } else if (field->type->typegroup == 'S') { - size_t parent_offset = ctx->head->parent_offset + field->offset; - if (field->type->fields->type == NULL) continue; - field = field->type->fields; - ++ctx->head; - ctx->head->field = field; - ctx->head->parent_offset = parent_offset; - break; - } else { - break; - } - } - } while (ctx->enc_count); - ctx->enc_type = 0; - ctx->is_complex = 0; - return 0; -} -static PyObject * -__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) -{ - const char *ts = *tsp; - int i = 0, number, ndim; - ++ts; - if (ctx->new_count != 1) { - PyErr_SetString(PyExc_ValueError, - "Cannot handle repeated arrays in format string"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ndim = ctx->head->field->type->ndim; - while (*ts && *ts != ')') { - switch (*ts) { - case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; - default: break; - } - number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) - return PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %d", - ctx->head->field->type->arraysize[i], number); - if (*ts != ',' && *ts != ')') - return PyErr_Format(PyExc_ValueError, - "Expected a comma in format string, got '%c'", *ts); - if (*ts == ',') ts++; - i++; - } - if (i != ndim) - return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", - ctx->head->field->type->ndim, i); - if (!*ts) { - PyErr_SetString(PyExc_ValueError, - "Unexpected end of format string, expected ')'"); - return NULL; - } - ctx->is_valid_array = 1; - ctx->new_count = 1; - *tsp = ++ts; - return Py_None; -} -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { - int got_Z = 0; - while (1) { - switch(*ts) { - case 0: - if (ctx->enc_type != 0 && ctx->head == NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - if (ctx->head != NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - return ts; - case ' ': - case '\r': - case '\n': - ++ts; - break; - case '<': - if (!__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '>': - case '!': - if (__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '=': - case '@': - case '^': - ctx->new_packmode = *ts++; - break; - case 'T': - { - const char* ts_after_sub; - size_t i, struct_count = ctx->new_count; - size_t struct_alignment = ctx->struct_alignment; - ctx->new_count = 1; - ++ts; - if (*ts != '{') { - PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - ctx->enc_count = 0; - ctx->struct_alignment = 0; - ++ts; - ts_after_sub = ts; - for (i = 0; i != struct_count; ++i) { - ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); - if (!ts_after_sub) return NULL; - } - ts = ts_after_sub; - if (struct_alignment) ctx->struct_alignment = struct_alignment; - } - break; - case '}': - { - size_t alignment = ctx->struct_alignment; - ++ts; - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - if (alignment && ctx->fmt_offset % alignment) { - ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); - } - } - return ts; - case 'x': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->fmt_offset += ctx->new_count; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->enc_packmode = ctx->new_packmode; - ++ts; - break; - case 'Z': - got_Z = 1; - ++ts; - if (*ts != 'f' && *ts != 'd' && *ts != 'g') { - __Pyx_BufFmt_RaiseUnexpectedChar('Z'); - return NULL; - } - CYTHON_FALLTHROUGH; - case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': - case 'l': case 'L': case 'q': case 'Q': - case 'f': case 'd': case 'g': - case 'O': case 'p': - if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) && - (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) { - ctx->enc_count += ctx->new_count; - ctx->new_count = 1; - got_Z = 0; - ++ts; - break; - } - CYTHON_FALLTHROUGH; - case 's': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_count = ctx->new_count; - ctx->enc_packmode = ctx->new_packmode; - ctx->enc_type = *ts; - ctx->is_complex = got_Z; - ++ts; - ctx->new_count = 1; - got_Z = 0; - break; - case ':': - ++ts; - while(*ts != ':') ++ts; - ++ts; - break; - case '(': - if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL; - break; - default: - { - int number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - ctx->new_count = (size_t)number; - } - } - } -} - -/* BufferGetAndValidate */ - static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (unlikely(info->buf == NULL)) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - __Pyx_ReleaseBuffer(info); -} -static void __Pyx_ZeroBuffer(Py_buffer* buf) { - buf->buf = NULL; - buf->obj = NULL; - buf->strides = __Pyx_zeros; - buf->shape = __Pyx_zeros; - buf->suboffsets = __Pyx_minusones; -} -static int __Pyx__GetBufferAndValidate( - Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, - int nd, int cast, __Pyx_BufFmt_StackElem* stack) -{ - buf->buf = NULL; - if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { - __Pyx_ZeroBuffer(buf); - return -1; - } - if (unlikely(buf->ndim != nd)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - nd, buf->ndim); - goto fail; - } - if (!cast) { - __Pyx_BufFmt_Context ctx; - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; - } - if (unlikely((size_t)buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", - buf->itemsize, (buf->itemsize > 1) ? "s" : "", - dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; - return 0; -fail:; - __Pyx_SafeReleaseBuffer(buf); - return -1; -} - -/* BufferIndexError */ - static void __Pyx_RaiseBufferIndexError(int axis) { - PyErr_Format(PyExc_IndexError, - "Out of bounds on buffer access (axis %d)", axis); -} - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* GetTopmostException */ - #if CYTHON_USE_EXC_INFO_STACK -static _PyErr_StackItem * -__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) -{ - _PyErr_StackItem *exc_info = tstate->exc_info; - while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && - exc_info->previous_item != NULL) - { - exc_info = exc_info->previous_item; - } - return exc_info; -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - *type = exc_info->exc_type; - *value = exc_info->exc_value; - *tb = exc_info->exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = type; - exc_info->exc_value = value; - exc_info->exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; icurexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) -#endif -{ - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if CYTHON_USE_EXC_INFO_STACK - { - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = local_type; - exc_info->exc_value = local_value; - exc_info->exc_traceback = local_tb; - } - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* PyObject_GenericGetAttrNoDict */ - #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 -static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { - PyErr_Format(PyExc_AttributeError, -#if PY_MAJOR_VERSION >= 3 - "'%.50s' object has no attribute '%U'", - tp->tp_name, attr_name); -#else - "'%.50s' object has no attribute '%.400s'", - tp->tp_name, PyString_AS_STRING(attr_name)); -#endif - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { - PyObject *descr; - PyTypeObject *tp = Py_TYPE(obj); - if (unlikely(!PyString_Check(attr_name))) { - return PyObject_GenericGetAttr(obj, attr_name); - } - assert(!tp->tp_dictoffset); - descr = _PyType_Lookup(tp, attr_name); - if (unlikely(!descr)) { - return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); - } - Py_INCREF(descr); - #if PY_MAJOR_VERSION < 3 - if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) - #endif - { - descrgetfunc f = Py_TYPE(descr)->tp_descr_get; - if (unlikely(f)) { - PyObject *res = f(descr, obj, (PyObject *)tp); - Py_DECREF(descr); - return res; - } - } - return descr; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, - size_t size, enum __Pyx_ImportType_CheckSize check_size) -{ - PyObject *result = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - result = PyObject_GetAttrString(module, class_name); - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if ((size_t)basicsize < size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - goto bad; - } - if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - goto bad; - } - else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(result); - return NULL; -} -#endif - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, *cython_runtime_dict, - __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -#if PY_MAJOR_VERSION < 3 -static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { - if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); - PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); - return -1; -} -static void __Pyx_ReleaseBuffer(Py_buffer *view) { - PyObject *obj = view->obj; - if (!obj) return; - if (PyObject_CheckBuffer(obj)) { - PyBuffer_Release(view); - return; - } - if ((0)) {} - view->obj = NULL; - Py_DECREF(obj); -} -#endif - - - /* Declarations */ - #if CYTHON_CCOMPLEX - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return ::std::complex< float >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return x + y*(__pyx_t_float_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - __pyx_t_float_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsf(b.real) >= fabsf(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - float r = b.imag / b.real; - float s = (float)(1.0) / (b.real + b.imag * r); - return __pyx_t_float_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - float r = b.real / b.imag; - float s = (float)(1.0) / (b.imag + b.real * r); - return __pyx_t_float_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - float denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_float_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtf(z.real*z.real + z.imag*z.imag); - #else - return hypotf(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - float denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_float(a, a); - case 3: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, a); - case 4: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if (b.imag == 0) { - z.real = powf(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2f(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_float(a); - theta = atan2f(a.imag, a.real); - } - lnr = logf(r); - z_r = expf(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosf(z_theta); - z.imag = z_r * sinf(z_theta); - return z; - } - #endif -#endif - -/* Declarations */ - #if CYTHON_CCOMPLEX - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return ::std::complex< double >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return x + y*(__pyx_t_double_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - __pyx_t_double_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabs(b.real) >= fabs(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - double r = b.imag / b.real; - double s = (double)(1.0) / (b.real + b.imag * r); - return __pyx_t_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - double r = b.real / b.imag; - double s = (double)(1.0) / (b.imag + b.real * r); - return __pyx_t_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrt(z.real*z.real + z.imag*z.imag); - #else - return hypot(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_double(a, a); - case 3: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, a); - case 4: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if (b.imag == 0) { - z.real = pow(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_double(a); - theta = atan2(a.imag, a.real); - } - lnr = log(r); - z_r = exp(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cos(z_theta); - z.imag = z_r * sin(z_theta); - return z; - } - #endif -#endif - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; ip) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { - int retval; - if (unlikely(!x)) return -1; - retval = __Pyx_PyObject_IsTrue(x); - Py_DECREF(x); - return retval; -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(b); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.cp38-win_amd64.exp b/landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.cp38-win_amd64.exp deleted file mode 100644 index 8d773ec6bc1a2bdac41dadcea6affbeb87210983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 zcmZWn!EVz)5S=7I0U^{}Dh?n;B8MXIV#iUGB9PL;frvIlF{(JMR5{*lwXG9d-gT4m z0bKa6a^+X}0(fi3O`s#s%-g5gneonu?{)eE@#;hmsT3wfXu{P2ZVDC9>lJkmet?e& zInB@7!HTBWHKICnQwFqsV9&Nj#oLfdEAC%^xIY|cNhGyqQR?@dg_@s)Gtuj^^h(h9 zYB*QsWF170aQzOnK~G`t7N`YlJ8e)KcB??Uun!9K3if`1?7iR6=V$tkw?Y}oM3;#O_Id6GRdX1(d%T#O6OtR z3QR6k!Y_5l_4fGjd;SGCG(QRey)NtQG2iukpHJ1Ce@wLb+VAmYughaKzhE{gJ)wTn zj_CGN526IGq6Ge;W=Gnf!Kn-lbKPycXUS|Xkj>Jd%~ipsfzjVa;S7~JIF&KkS$c^B o*&$U-8D)o6F^kU`cG10I+9Ma@(fEb|D3-x`D|Om|z5OSD0b8e?HUIzs diff --git a/landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.cp38-win_amd64.lib b/landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.cp38-win_amd64.lib deleted file mode 100644 index 1938c720506fb5edb78ee201626d7e8b356964ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2052 zcmcgtJ8#oa6#n9b79xbgV+}G=Bw%Qq=A|GZZVbe%ucWa^^hjYqg5xCsuL4P zFfg<52iU4^6=LZ>U}OXd7N&BJ?VCC@acc?XN;mhM<8vS1cfWIU=V7aFZa#`D@?=|D zp7e#6@r>n?u$plImjFozVh6y&0UynitUTR#Qq!vS^_roVwQ9d>wg-c> z*~^udcI+*q)v=0s7)GU`>u0Cn)yz5WjQX=iWz|?I*UPBxYFqZuw+XFkcY4Ozcxb#2 zPVvSFur2`yWH8#jMTY>y5P?L$(W&S7FI>!m6M`en1*9xD;xGV#kTZMC0|UZyr&4`Ac9aJ*4P;&IxxTEkWk3tU4IN242S zw%P9vx-W+Ez1n?Q*D9;t_le;ud3-ePR6358pkJybiUsZq)$De9gy(1!iJYAH*PzKH zLhgbV6>uPJiiksiyR(;*=Ny`ZaZceh!tpV;Wb^8PACiP^ip;;<<6#w-EtY(WlTiBe z;rCZMx(jK#;w(n%Yd*#0M3@!#SvcOvikp*?E~17c9c$(j82d`|sQD Per6mdVpINof*+H=CNh@{ diff --git a/landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.obj b/landcover-L-SAR/tool/LAI/build/temp.win-amd64-3.8/Release/build/LAIProcess.obj deleted file mode 100644 index 85b20debe474cff728ea7ee18827f789ace7be50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600245 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

@?Ak2DE}&tjsbSYGfnoR@p@E*( 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ÐQa-cdqREd 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 WPr%g3zTl)EFsqN7`SgEk!~X-~23Pn1 diff --git a/landcover-L-SAR/tool/LAI/setup.py b/landcover-L-SAR/tool/LAI/setup.py deleted file mode 100644 index 67c737a..0000000 --- a/landcover-L-SAR/tool/LAI/setup.py +++ /dev/null @@ -1,45 +0,0 @@ -from setuptools import setup -from setuptools.extension import Extension -from Cython.Distutils import build_ext -from Cython.Build import cythonize -import numpy -from pathlib import Path -import shutil - - -class MyBuildExt(build_ext): - def run(self): - build_ext.run(self) - - build_dir = Path(self.build_lib) - root_dir = Path(__file__).parent - target_dir = build_dir if not self.inplace else root_dir - - self.copy_file(Path('./LAIProcess') / '__init__.py', root_dir, target_dir) - #self.copy_file(Path('./pkg2') / '__init__.py', root_dir, target_dir) - self.copy_file(Path('.') / '__init__.py', root_dir, target_dir) - def copy_file(self, path, source_dir, destination_dir): - if not (source_dir / path).exists(): - return - shutil.copyfile(str(source_dir / path), str(destination_dir / path)) - -setup( - name="MyModule", - ext_modules=cythonize( - [ - #Extension("pkg1.*", ["root/pkg1/*.py"]), - Extension("pkg2.*", ["./LAIProcess.pyx"]), - #Extension("1.*", ["root/*.py"]) - ], - build_dir="build", - compiler_directives=dict( - always_allow_keywords=True - )), - cmdclass=dict( - build_ext=MyBuildExt - ), - packages=[], - include_dirs=[numpy.get_include()], -) - -# 指令: python setup.py build_ext --inplace diff --git a/landcover-L-SAR/tool/algorithm/algtools/CoordinateTransformation.py b/landcover-L-SAR/tool/algorithm/algtools/CoordinateTransformation.py deleted file mode 100644 index 8afe99b..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/CoordinateTransformation.py +++ /dev/null @@ -1,117 +0,0 @@ -# -*- encoding: utf-8 -*- -# code from https://blog.csdn.net/theonegis/article/details/54427906 -from osgeo import gdal -from osgeo import osr -import numpy as np - -def getSRSPair(dataset): - """ - 获得给定数据的投影参考系和地理参考系 - :param dataset: GDAL地理数据 - :return: 投影参考系和地理参考系 - """ - prosrs = osr.SpatialReference() - prosrs.ImportFromWkt(dataset.GetProjection()) - geosrs = prosrs.CloneGeogCS() - return prosrs, geosrs - - -def geo2lonlat(dataset, x, y): - """ - 将投影坐标转为经纬度坐标(具体的投影坐标系由给定数据确定) - :param dataset: GDAL地理数据 - :param x: 投影坐标x - :param y: 投影坐标y - :return: 投影坐标(x, y)对应的经纬度坐标(lon, lat) - """ - prosrs, geosrs = getSRSPair(dataset) - ct = osr.CoordinateTransformation(prosrs, geosrs) - coords = ct.TransformPoint(x, y) - return coords[:2] - - -def lonlat2geo(dataset, lon, lat): - """ - 将经纬度坐标转为投影坐标(具体的投影坐标系由给定数据确定) - :param dataset: GDAL地理数据 - :param lon: 地理坐标lon经度 - :param lat: 地理坐标lat纬度 - :return: 经纬度坐标(lon, lat)对应的投影坐标 - """ - prosrs, geosrs = getSRSPair(dataset) - ct = osr.CoordinateTransformation(geosrs, prosrs) - coords = ct.TransformPoint(lat, lon) - return coords[:2] - - -def imagexy2geo(dataset, row, col): - """ - 根据GDAL的六参数模型将影像图上坐标(行列号)转为投影坐标或地理坐标(根据具体数据的坐标系统转换) - :param dataset: GDAL地理数据 - :param row: 像素的行号 - :param col: 像素的列号 - :return: 行列号(row, col)对应的投影坐标或地理坐标(x, y) - """ - trans = dataset.GetGeoTransform() - px = trans[0] + col * trans[1] + row * trans[2] - py = trans[3] + col * trans[4] + row * trans[5] - return px, py - - -def geo2imagexy(dataset, x, y): - """ - 根据GDAL的六 参数模型将给定的投影或地理坐标转为影像图上坐标(行列号) - :param dataset: GDAL地理数据 - :param x: 投影或地理坐标x - :param y: 投影或地理坐标y - :return: 影坐标或地理坐标(x, y)对应的影像图上行列号(col, row) - """ - trans = dataset.GetGeoTransform() - a = np.array([[trans[1], trans[2]], [trans[4], trans[5]]]) - b = np.array([x - trans[0], y - trans[3]]) - return np.linalg.solve(a, b) # 使用numpy的linalg.solve进行二元一次方程的求解 - - -def test1(): - gdal.AllRegister() - tif = 'D:/DATA/testdata/GLCFCS30_E110N25.tif' - # dataset = gdal.Open(r"D:\\DATA\\雷达测试\\GaoFen3_20200528_HH_DB.tif") - dataset = gdal.Open(tif) - - print('数据投影:') - print(dataset.GetProjection()) - print('数据的大小(行,列):') - print('(%s %s)' % (dataset.RasterYSize, dataset.RasterXSize)) - - x = 793214.118 - y = 2485865.527 - lon = 113.84897082317516 - lat = 22.453998686022448 - row = 24576 - col = 22540 - - print('图上坐标 -> 投影坐标:') - coords = imagexy2geo(dataset, row, col) - print('(%s, %s)->(%s, %s)' % (row, col, coords[0], coords[1])) - print('投影坐标 -> 图上坐标:') - coords = geo2imagexy(dataset, x, y) - col = coords[0] - row = coords[1] - print('(%s, %s)->(%s, %s)' % (x, y, coords[0], coords[1])) - - print('投影坐标 -> 经纬度:') - coords = geo2lonlat(dataset, x, y) - print('(%s, %s)->(%s, %s)' % (x, y, coords[0], coords[1])) - print('经纬度 -> 投影坐标:') - coords = lonlat2geo(dataset, lon, lat) - print('(%s, %s)->(%s, %s)' % (lon, lat, coords[0], coords[1])) - - coords1 = geo2lonlat(dataset, 657974.118, 2633321.527) - print(coords1) - coords2 = geo2lonlat(dataset, 793214.118, 2485865.527) - print(coords2) - pass - -# if __name__ == '__main__': -# -# print('done') diff --git a/landcover-L-SAR/tool/algorithm/algtools/DEMJoint.py b/landcover-L-SAR/tool/algorithm/algtools/DEMJoint.py deleted file mode 100644 index d3a71cd..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/DEMJoint.py +++ /dev/null @@ -1,156 +0,0 @@ -""" -@Project :microproduct -@File :DEMJoint -@Function :主函数 -@Author :LMM -@Date :2021/10/19 14:39 -@Version :1.0.0 -""" -from osgeo import gdal, osr -import os -import numpy as np - - -class DEMProcess: - """ - DEM拼接、重采样 - """ - def __init__(self): - pass - - @staticmethod - def get_extent(fn): - ''' - 原文链接:https://blog.csdn.net/XBR_2014/article/details/85255412 - ''' - ds = gdal.Open(fn) - rows = ds.RasterYSize - cols = ds.RasterXSize - # 获取图像角点坐标 - gt = ds.GetGeoTransform() - minx = gt[0] - maxy = gt[3] - maxx = gt[0] + gt[1] * rows - miny = gt[3] + gt[5] * cols - return (minx, maxy, maxx, miny) - - @staticmethod - def img_mosaic(in_files, out_dem_path): - # 通过两两比较大小,将最终符合条件的四个角点坐标保存 - # 即为拼接图像的四个角点坐标 - minX, maxY, maxX, minY = DEMProcess.get_extent(in_files[0]) - for fn in in_files[1:]: - minx, maxy, maxx, miny = DEMProcess.get_extent(fn) - minX = min(minX, minx) - maxY = max(maxY, maxy) - maxX = max(maxX, maxx) - minY = min(minY, miny) - - # 获取输出图像的行列数 - in_ds = gdal.Open(in_files[0]) - bands_num = in_ds.RasterCount - gt = in_ds.GetGeoTransform() - rows = int((maxX - minX) / abs(gt[5])) - cols = int((maxY - minY) / gt[1]) - - # 判断栅格数据的数据类型 - datatype = gdal.GDT_UInt16 - - # 创建输出图像 - driver = gdal.GetDriverByName('GTiff') - out_dem = os.path.join(out_dem_path, 'mosaic0.tif') - out_ds = driver.Create(out_dem, cols, rows, bands_num, datatype) - out_ds.SetProjection(in_ds.GetProjection()) - - gt = list(in_ds.GetGeoTransform()) - gt[0], gt[3] = minX, maxY - out_ds.SetGeoTransform(gt) - - for fn in in_files: - in_ds = gdal.Open(fn) - x_size = in_ds.RasterXSize - y_size = in_ds.RasterYSize - trans = gdal.Transformer(in_ds, out_ds, []) - success, xyz = trans.TransformPoint(False, 0, 0) - x, y, z = map(int, xyz) - for i in range(1, bands_num + 1): - data = in_ds.GetRasterBand(i).ReadAsArray() - out_band = out_ds.GetRasterBand(i) - out_data = out_band.ReadAsArray(x, y, x_size, y_size) - data = np.maximum(data, out_data) - out_band.WriteArray(data, x, y) - - del in_ds, out_band, out_ds - - @staticmethod - def dem_clip(OutFilePath, DEMFilePath, SelectArea): - ''' - 根据选择范围裁剪DEM,并输出 - agrs: - outFilePath:裁剪DEM输出地址 - DEMFilePath:被裁减DEM地址 - SelectArea:list [(xmin,ymax),(xmax,ymin)] 框选范围 左上角,右下角 - ''' - DEM_ptr = gdal.Open(DEMFilePath) - DEM_GeoTransform = DEM_ptr.GetGeoTransform() # 读取影像的投影变换 - DEM_InvGeoTransform = gdal.InvGeoTransform(DEM_GeoTransform) - SelectAreaArrayPoints = [gdal.ApplyGeoTransform(DEM_InvGeoTransform, p[0], p[1]) for p in SelectArea] - SelectAreaArrayPoints = list(map(lambda p: (int(p[0]), int(p[1])), SelectAreaArrayPoints)) # 确定坐标 - - [(ulx, uly), (brx, bry)] = SelectAreaArrayPoints - rowCount, colCount = bry - uly, brx - ulx - - # 输出DEM的桌面坐标转换 - Out_Transfrom = list(DEM_GeoTransform) - Out_Transfrom[0] = SelectArea[0][0] - Out_Transfrom[3] = SelectArea[0][1] - - # 构建输出DEM - Bands_num = DEM_ptr.RasterCount - gtiff_driver = gdal.GetDriverByName('GTiff') - datatype = gdal.GDT_UInt16 - out_dem = gtiff_driver.Create(OutFilePath, colCount, rowCount, Bands_num, datatype) - out_dem.SetProjection(DEM_ptr.GetProjection()) - out_dem.SetGeoTransform(Out_Transfrom) - - for i in range(1, Bands_num + 1): - data_band = DEM_ptr.GetRasterBand(i) - out_band = out_dem.GetRasterBand(i) - data = data_band.ReadAsArray(ulx, uly, colCount, rowCount) - out_band.WriteArray(data) - del out_dem - - @staticmethod - def dem_resample(in_dem_path, out_dem_path): - ''' - DEM重采样函数,默认坐标系为WGS84 - agrs: - in_dem_path: 输入的DEM文件夹路径 - meta_file_path: 输入的xml元文件路径 - out_dem_path: 输出的DEM文件夹路径 - ''' - # 读取文件夹中所有的DEM - dem_file_paths=[os.path.join(in_dem_path,dem_name) for dem_name in os.listdir(in_dem_path) if dem_name.find(".tif")>=0 and dem_name.find(".tif.")==-1] - spatialreference=osr.SpatialReference() - spatialreference.SetWellKnownGeogCS("WGS84") # 设置地理坐标,单位为度 degree # 设置投影坐标,单位为度 degree - spatialproj=spatialreference.ExportToWkt() # 导出投影结果 - # 将DEM拼接成一张大图 - mergeFile =gdal.BuildVRT(os.path.join(out_dem_path,"mergeDEM.tif"), dem_file_paths) - out_DEM=os.path.join(out_dem_path,"mosaic.tif") - gdal.Warp(out_DEM, - mergeFile, - format="GTiff", - dstSRS=spatialproj, - dstNodata=-9999, - outputType=gdal.GDT_Float32) - return out_DEM - - -# if __name__ == "__main__": -# DEMProcess = DEMProcess() -# in_dem_path = r'F:\大气延迟\out_dem' -# out_dem_path = r'F:\大气延迟\out_dem' -# DEMProcess.dem_resample(in_dem_path, out_dem_path) - - - diff --git a/landcover-L-SAR/tool/algorithm/algtools/MetaDataHandler.py b/landcover-L-SAR/tool/algorithm/algtools/MetaDataHandler.py deleted file mode 100644 index 8779132..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/MetaDataHandler.py +++ /dev/null @@ -1,154 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project :microproduct -@File :ScatteringAuxData.py -@Function :后向散射 -@Author :SHJ -@Contact: -@Date :2022/6/29 -@Version :1.0.0 -修改历史: -[修改序列] [修改日期] [修改者] [修改内容] - 1 2022-6-29 石海军 1.兼容GF3元文件和正射校正元文件提取信息 -""" -import logging -from xml.etree.ElementTree import ElementTree -import math -logger = logging.getLogger("mylog") - -class GF3L1AMetaData: - def __init__(self): - pass - @staticmethod - def get_QualifyValue(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - QualifyValue = float(root.find('imageinfo').find('QualifyValue').find(polarization).text) - return QualifyValue - - - @staticmethod - def get_Kdb(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - Kdb = float(root.find('processinfo').find('CalibrationConst').find(polarization).text) if root.find('processinfo').find('CalibrationConst').find(polarization).text!="NULL" else 0 - return Kdb - -class OrthoMetaData: - def __init__(self): - pass - @staticmethod - def get_QualifyValue(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - QualifyValue = float(root.find('processing').find('processingParameter').find('quantifyValue').find(polarization).text) - return QualifyValue - - @staticmethod - def get_Kdb(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - Kdb = float(root.find('processing').find('processingParameter').find('calibrationConst').find(polarization).text) - return Kdb - - - @staticmethod - def get_RadarCenterFrequency(meta_file_path): - # 获取微波中心频率 - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - RadarCenterFrequency = float(root.find('instrument').find('radarParameters').find('centerFrequency').text) - return RadarCenterFrequency - - - @staticmethod - def get_lamda(meta_file_path): - # 获取微波波长,单位:m - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - lamda = float(root.find('sensor').find('lamda').text) - return lamda - -class MetaDataHandler: - def __init__(self): - pass - - @staticmethod - def get_QualifyValue(meta_file_path, polarization): - try: - QualifyValue = OrthoMetaData.get_QualifyValue(meta_file_path, polarization) - except Exception: - logger.warning('LTMetaData.get_QualifyValue() error!') - QualifyValue = GF3L1AMetaData.get_QualifyValue(meta_file_path, polarization) - logger.info('GF3L1AMetaData.get_QualifyValue() success!') - return QualifyValue - - @staticmethod - def get_Kdb(meta_file_path, polarization): - try: - Kdb = OrthoMetaData.get_Kdb(meta_file_path, polarization) - except Exception: - logger.warning('LTMetaData.get_Kdb() error!') - Kdb = GF3L1AMetaData.get_Kdb(meta_file_path, polarization) - logger.info('GF3L1AMetaData.get_Kdb() success!') - return Kdb - - @staticmethod - def get_RadarCenterFrequency(meta_file_path): - # 获取微波中心频率,单位GHz - RadarCenterFrequency = OrthoMetaData.get_RadarCenterFrequency(meta_file_path) - return RadarCenterFrequency - - @staticmethod - def get_lamda(meta_file_path): - # 获取微波波长,单位:m - lamda = OrthoMetaData.get_lamda(meta_file_path) - return lamda - -class Calibration: - def __init__(self): - pass - - @staticmethod - def get_Calibration_coefficient(meta_file_path, polarization): - calibration = [0, 0, 0, 0] - for i in polarization: - if i == 'HH': - quality = MetaDataHandler.get_QualifyValue(meta_file_path, i) - kdb = MetaDataHandler.get_Kdb(meta_file_path, i) - data_value = ((quality/32767)**2) * (10**((kdb/10)*-1)) - calibration[0] = math.sqrt(data_value) - if i == 'HV': - quality = MetaDataHandler.get_QualifyValue(meta_file_path, i) - kdb = MetaDataHandler.get_Kdb(meta_file_path, i) - data_value = ((quality/32767)**2) * (10**((kdb/10)*-1)) - calibration[1] = math.sqrt(data_value) - if i == 'VH': - quality = MetaDataHandler.get_QualifyValue(meta_file_path, i) - kdb = MetaDataHandler.get_Kdb(meta_file_path, i) - data_value = ((quality/32767)**2) * (10**((kdb/10)*-1)) - calibration[2] = math.sqrt(data_value) - if i == 'VV': - quality = MetaDataHandler.get_QualifyValue(meta_file_path, i) - kdb = MetaDataHandler.get_Kdb(meta_file_path, i) - data_value = ((quality/32767)**2) * (10**((kdb/10)*-1)) - calibration[3] = math.sqrt(data_value) - return calibration - - -# if __name__ == '__main__': -# A = ScatteringAuxData() -# dir = 'G:\MicroWorkspace\C-SAR\AuxSAR\GF3_KAS_FSII_020008_E113.2_N23.1_20200528_L1A_HHHV_L10004829485_geo/' -# path = dir + 'GF3_KAS_FSII_020008_E113.2_N23.1_20200528_L1A_HHHV_L10004829485.meta.xml' -# path1 = dir + 'OrthoProduct.meta.xml' -# t1 = A.get_QualifyValue(path, 'HH') -# t2 = A.get_Kdb(path, 'HH') -# t3 = A.get_RadarCenterFrequency(path) -# t4 = A.get_lamda(path) -# pass \ No newline at end of file diff --git a/landcover-L-SAR/tool/algorithm/algtools/PreProcess.py b/landcover-L-SAR/tool/algorithm/algtools/PreProcess.py deleted file mode 100644 index e9b9155..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/PreProcess.py +++ /dev/null @@ -1,527 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project :microproduct -@File :PreProcess.py -@Function :@Function: 坐标转换,坐标系转换,图像裁剪,重投影,重采样 -@Author :LMM -@Date :2021/8/25 14:17 -@Version :1.0.0 -""" -from shapely.geometry import Polygon # 导入 gdal库要放到这一句的后面,不然会引起错误 - -from osgeo import gdal -from osgeo import gdalconst -from osgeo import osr -from osgeo import ogr -import os -import cv2 -import numpy as np -import shutil -import scipy.spatial.transform -import scipy.spatial.transform._rotation_groups # 用于解决打包错误 -import scipy.special.cython_special # 用于解决打包错误 -import scipy.spatial.transform._rotation_groups # 解决打包的问题 -import shapefile -from shapely.errors import TopologicalError -from tool.algorithm.image.ImageHandle import ImageHandler -import logging -logger = logging.getLogger("mylog") - -os.environ['PROJ_LIB'] = os.getcwd() - - - -class PreProcess: - """ - 预处理,所有的影像配准 - """ - def __init__(self): - self._ImageHandler = ImageHandler() - pass - - def cal_scopes(self, processing_paras): - # 计算roi - scopes = () - for key, value in processing_paras.items(): - if 'ori_sim' in key: - scopes += (ImageHandler.get_scope_ori_sim(value),) - if(processing_paras['box'] != "" or processing_paras['box'] != "empty"): - scopes += self.box2scope(processing_paras['box']) - return scopes - - def cal_scopes_roi(self, processing_paras): - return self.intersect_polygon(self.cal_scopes(processing_paras)) - - def cut_geoimg(self,workspace_preprocessing_path, para_names_geo, processing_paras): - self.check_img_projection(workspace_preprocessing_path, para_names_geo, processing_paras) - # 计算roi - - scopes = self.cal_scopes(processing_paras) - # 计算图像的轮廓,并求相交区域 - intersect_shp_path = os.path.join(workspace_preprocessing_path, 'IntersectPolygon.shp') - scopes_roi = self.cal_intersect_shp(intersect_shp_path, para_names_geo, processing_paras, scopes) - # 裁剪 - # 裁剪图像:裁剪微波图像,裁剪其他图像 - cutted_img_paths = self.cut_imgs(workspace_preprocessing_path, para_names_geo, processing_paras, intersect_shp_path) - return cutted_img_paths, scopes_roi - - - - def preprocessing(self, para_names, ref_img_name, processing_paras, workspace_preprocessing_path, workspace_preprocessed_path): - # 读取每一张图像,检查图像坐标系 - - self.check_img_projection(workspace_preprocessing_path, para_names, processing_paras) - - # 计算图像的轮廓,并求相交区域 - intersect_shp_path = os.path.join(workspace_preprocessing_path, 'IntersectPolygon.shp') - self.cal_intersect_shp(intersect_shp_path, para_names, processing_paras, - self.box2scope(processing_paras['box'])) - logger.info('create intersect shp success!') - - # 裁剪图像:裁剪微波图像,裁剪其他图像 - cutted_img_paths = self.cut_imgs(workspace_preprocessing_path, para_names, processing_paras, - intersect_shp_path) - logger.info('cut images success!') - - # 重采样:重采样到跟微波图像一致的分辨率,然后保存到临时目录 - - preprocessed_paras = self.resampling_img(workspace_preprocessed_path, para_names, cutted_img_paths,cutted_img_paths[ref_img_name]) - # 清除预处理缓存文件 - logger.info('preprocess_handle success!') - return preprocessed_paras # cutted_img_paths - - def get_ref_inf(self, ref_img_path): - """获取参考影像的图像信息""" - ref_img_path = ref_img_path - cols = ImageHandler.get_img_width(ref_img_path) - rows = ImageHandler.get_img_height(ref_img_path) - proj = ImageHandler.get_projection(ref_img_path) - geo = ImageHandler.get_geotransform(ref_img_path) - return ref_img_path, cols, rows, proj, geo - - def check_img_projection(self, out_dir, para_names, processing_paras): - """ - 读取每一张图像,检查图像坐标系; - 将投影坐标系影像转换为地理坐标系影像(EPSG:4326) - :param para_names:需要检查的参数名称 - """ - if len(para_names) == 0: - return False - for name in para_names: - proj = ImageHandler.get_projection(processing_paras[name]) - keyword = proj.split("[", 2)[0] - - if keyword == "PROJCS": - # 投影坐标系 转 地理坐标系 - para_dir = os.path.split(processing_paras[name]) - out_para = os.path.join(out_dir, para_dir[1].split(".", 1)[0] + "_EPSG4326.tif") - self.trans_epsg4326(out_para, processing_paras[name]) - processing_paras[name] = out_para - elif len(keyword) == 0 or keyword.strip() == "" or keyword.isspace() is True: - raise Exception('coordinate is missing!') - - - def preprocessing_oh2004(self, para_names, processing_paras, workspace_preprocessing_path, workspace_preprocessed_path): - # 读取每一张图像,检查图像坐标系 - - self.check_img_projection(workspace_preprocessing_path, para_names, processing_paras) - - # 计算图像的轮廓,并求相交区域 - intersect_shp_path = os.path.join(workspace_preprocessing_path, 'IntersectPolygon.shp') - scopes = self.cal_intersect_shp(intersect_shp_path, para_names, processing_paras, - self.box2scope(processing_paras['box'])) - logger.info('create intersect shp success!') - - # 裁剪图像:裁剪微波图像,裁剪其他图像 - cutted_img_paths = self.cut_imgs(workspace_preprocessed_path, para_names, processing_paras, - intersect_shp_path) - logger.info('cut images success!') - - # 重采样:重采样到跟微波图像一致的分辨率,然后保存到临时目录 - - return cutted_img_paths, scopes - - @staticmethod - def lonlat2geo(lat, lon): - """ - WGS84转平面坐标 - Param: lat 为WGS_1984的纬度 - Param: lon 为WGS_1984的经度 - 输出转换后的坐标x,y - """ - - dstsrs1 = osr.SpatialReference() - dstsrs1.ImportFromEPSG(32649) - - dstsrs2 = osr.SpatialReference() - dstsrs2.ImportFromEPSG(4326) - - ct = osr.CoordinateTransformation(dstsrs2, dstsrs1) - coords = ct.TransformPoint(lat, lon) - # print("输出转换后的坐标x,y:",coords[:2]) - return coords[:2] - - @staticmethod - def trans_geogcs2projcs(out_path, in_path): - """ - :param out_path:wgs84投影坐标影像保存路径 - :param in_path:地理坐标影像输入路径 - """ - # 创建文件 - if os.path.exists(os.path.split(out_path)[0]) is False: - os.makedirs(os.path.split(out_path)[0]) - options = gdal.WarpOptions(format='GTiff', srcSRS='EPSG:4326', dstSRS='EPSG:32649') - gdal.Warp(out_path, in_path, options=options) - - @staticmethod - def trans_projcs2geogcs(out_path, in_path): - """ - :param out_path:wgs84地理坐标影像输入路径 - :param in_path:wgs84投影坐标影像保存路径 - """ - # 创建文件 - if os.path.exists(os.path.split(out_path)[0]) is False: - os.makedirs(os.path.split(out_path)[0]) - options = gdal.WarpOptions(format='GTiff', srcSRS='EPSG:32649', dstSRS='EPSG:4326') - gdal.Warp(out_path, in_path, options=options) - - @staticmethod - def trans_projcs2geogcs(out_path, in_path ,EPSG_src=32649,EPSG_dst=4326): - """ - :param out_path:wgs84地理坐标影像输入路径 - :param in_path:wgs84投影坐标影像保存路径 - :param EPSG_src:原始投影系 - :param EPSG_dst:目标坐标系 - """ - str_EPSG_src = 'EPSG:'+ str(EPSG_src) - str_EPSG_dst = 'EPSG:'+ str(EPSG_dst) - - # 创建文件 - if os.path.exists(os.path.split(out_path)[0]) is False: - os.makedirs(os.path.split(out_path)[0]) - options = gdal.WarpOptions(format='GTiff', srcSRS=str_EPSG_src, dstSRS=str_EPSG_dst) - gdal.Warp(out_path, in_path, options=options) - - @staticmethod - def trans_epsg4326(out_path, in_path): - OutTile = gdal.Warp(out_path, in_path, - dstSRS='EPSG:4326', - resampleAlg=gdalconst.GRA_Bilinear - ) - OutTile = None - return True - - @staticmethod - def box2scope(str_box): - roi_box = () - if str_box == '' or str_box == 'empty': - return roi_box - box_list = [float(num) for num in list(str_box.split(';'))] - if len(box_list) == 4: - roi_box = ([[box_list[2], box_list[1]], [box_list[3], box_list[1]], [box_list[2], box_list[0]], - [box_list[3], box_list[0]]],) - return roi_box - - def cal_intersect_shp(self, shp_path, para_names,processing_paras, add_scope =()): - """ - :param shp_path:相交区域矢量文件保存区域 - :param para_names:判断相交影像的名称 - :return: True or False - """ - scopes = () - - if len(add_scope) != 0: - scopes += add_scope - for name in para_names: - scope_tuple = (self._ImageHandler.get_scope(processing_paras[name]),) - scopes += scope_tuple - for n, scope in zip( range(len(scopes)), scopes): - logging.info("scope" + str(n) + ":%s", scope) - - intersect_polygon = self.intersect_polygon(scopes) - if intersect_polygon is None: - logger.error('image range does not overlap!') - raise Exception('create intersect shp fail!') - logging.info("scope roi :%s", intersect_polygon) - if self.write_polygon_shp(shp_path, intersect_polygon, 4326) is False: - raise Exception('create intersect shp fail!') - return intersect_polygon - - @staticmethod - def intersect_polygon(scopes_tuple): - """ - 功能说明:计算多边形相交的区域坐标;注意:多边形区域会转变成凸区域再求交 - :param scopes_tuple: 输入多个区域坐标的tuple - :return: 多边形相交的区域坐标((x0,y0),(x1,y1),..., (xn,yn)) - """ - if len(scopes_tuple) < 2: - logger.error('len(scopes_tuple) < 2') - # return # todo 修改只有单景会出现无法判断相交区域问题 - - try: - # python四边形对象,会自动计算四个点,最后四个点顺序为:左上 左下 右下 右上 左上 - tmp = tuple(scopes_tuple[0]) - poly_intersect = Polygon(tmp).convex_hull - for i in range(len(scopes_tuple)-1): - polygon_next = Polygon(tuple(scopes_tuple[i+1])).convex_hull - if poly_intersect.intersects(polygon_next): - poly_intersect = poly_intersect.intersection(polygon_next) - else: - msg = 'Image:' + str(i) + 'range does not overlap!' - logger.error(msg) - return - return list(poly_intersect.boundary.coords)[:-1] - # except shapely.geos.TopologicalError: - except TopologicalError: - logger.error('shapely.geos.TopologicalError occurred!') - return - - - @staticmethod - def write_polygon_shp(out_shp_path, point_list, EPSG =32649): - """ - 功能说明:创建闭环的矢量文件。 - :param out_shp_path :矢量文件保存路径 - :param point_list :装有闭环点的列表[[x0,y0],[x1,y1]...[xn,yn]] - :return: True or False - """ - # 为了支持中文路径,请添加下面这句代码 - gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "NO") - # 为了使属性表字段支持中文,请添加下面这句 - gdal.SetConfigOption("SHAPE_ENCODING", "") - # 注册所有的驱动 - ogr.RegisterAll() - - # 创建数据,这里以创建ESRI的shp文件为例 - str_driver_name = "ESRI Shapefile" - o_driver = ogr.GetDriverByName(str_driver_name) - if o_driver is None: - msg = 'driver('+str_driver_name+')is invalid value' - logger.error(msg) - return False - - # 创建数据源 - if os.path.exists(out_shp_path) and os.path.isfile(out_shp_path): # 如果已存在同名文件 - os.remove(out_shp_path) # 则删除之 - o_ds = o_driver.CreateDataSource(out_shp_path) - if o_ds is None: - msg = 'create file failed!' + out_shp_path - logger.error(msg) - return False - - # 创建图层,创建一个多边形图层 - srs = osr.SpatialReference() - #srs.ImportFromEPSG(32649) # 投影坐标系,空间参考:WGS84 - - srs.ImportFromEPSG(EPSG) # 地理坐标系EPSG - o_layer = o_ds.CreateLayer("TestPolygon", srs, ogr.wkbPolygon) - if o_layer is None: - msg = 'create coverage failed!' - logger.error(msg) - return False - - # 下面创建属性表 - # 先创建一个叫FieldID的整型属性 - o_field_id = ogr.FieldDefn("FieldID", ogr.OFTInteger) - o_layer.CreateField(o_field_id, 1) - - # 再创建一个叫FeatureName的字符型属性,字符长度为50 - o_field_name = ogr.FieldDefn("FieldName", ogr.OFTString) - o_field_name.SetWidth(100) - o_layer.CreateField(o_field_name, 1) - - o_defn = o_layer.GetLayerDefn() - - # 创建矩形要素 - o_feature_rectangle = ogr.Feature(o_defn) - o_feature_rectangle.SetField(0, 1) - o_feature_rectangle.SetField(1, "IntersectRegion") - - # 创建环对象ring - ring = ogr.Geometry(ogr.wkbLinearRing) - - for i in range(len(point_list)): - ring.AddPoint(point_list[i][0], point_list[i][1]) - ring.CloseRings() - - # 创建环对象polygon - geom_rect_polygon = ogr.Geometry(ogr.wkbPolygon) - geom_rect_polygon.AddGeometry(ring) - - o_feature_rectangle.SetGeometry(geom_rect_polygon) - o_layer.CreateFeature(o_feature_rectangle) - - o_ds.Destroy() - return True - - def cut_imgs(self, out_dir, para_names, processing_paras, shp_path): - """ - 使用矢量数据裁剪影像 - :param para_names:需要检查的参数名称 - :param shp_path:裁剪的shp文件 - """ - if len(para_names) == 0: - return {} - cutted_img_paths = {} - try: - for name in para_names: - input_path = processing_paras[name] - output_path = os.path.join(out_dir, name + '_cut.tif') - self.cut_img(output_path, input_path, shp_path) - cutted_img_paths.update({name: output_path}) - logger.info('cut %s success!', name) - except BaseException: - logger.error('cut_img failed!') - return {} - return cutted_img_paths - - @staticmethod - def cut_img(output_path, input_path, shp_path): - """ - :param output_path:剪切后的影像 - :param input_path:待剪切的影像 - :param shp_path:矢量数据 - :return: True or False - """ - r = shapefile.Reader(shp_path) - box = r.bbox - - input_dataset = gdal.Open(input_path) - - gdal.Warp(output_path, input_dataset, format='GTiff', outputBounds=box, cutlineDSName=shp_path, dstNodata=-9999) - # cutlineWhere="FIELD = ‘whatever’", - # optionally you can filter your cutline (shapefile) based on attribute values - # select the no data value you like - # ds = None - # do other stuff with ds object, it is your cropped dataset. in this case we only close the dataset. - del input_dataset - return True - - def resampling_img(self, out_dir, para_names, img_paths, refer_img_path): - """ - 以主影像为参考,对影像重采样 - :param para_names:需要检查的参数名称 - :param img_paths:待重采样影像路径 - :param refer_img_path:参考影像路径 - """ - if len(para_names) == 0 or len(img_paths) == 0: - return - prepro_imgs_path = {} - for name in para_names: - img_path = img_paths[name] - output_para = os.path.join(out_dir, name + '_preprocessed.tif') # + name + '_preprocessed.tif' - self.resampling_by_scale(img_path, output_para, refer_img_path) - prepro_imgs_path.update({name: output_para}) - logger.info('resampling %s success!', name) - return prepro_imgs_path - - @staticmethod - def resampling_by_scale(input_path, target_file, refer_img_path): - """ - 按照缩放比例对影像重采样 - :param input_path: GDAL地理数据路径 - :param target_file: 输出影像 - :param refer_img_path:参考影像 - :return: True or False - """ - ref_dataset = gdal.Open(refer_img_path) - ref_cols = ref_dataset.RasterXSize # 列数 - ref_rows = ref_dataset.RasterYSize # 行数 - - target_dataset = gdal.Open(input_path) - target_cols = target_dataset.RasterXSize # 列数 - target_rows = target_dataset.RasterYSize # 行数 - - if(ref_cols == target_cols) and (ref_rows == target_rows): - shutil.copyfile(input_path, target_file) - return True - - dataset = gdal.Open(input_path) - if dataset is None: - logger.error('resampling_by_scale:dataset is None!') - return False - - band_count = dataset.RasterCount # 波段数 - if (band_count == 0) or (target_file == ""): - logger.error("resampling_by_scale:Parameters of the abnormal!") - return False - - cols = dataset.RasterXSize # 列数 - rows = dataset.RasterYSize # 行数 - scale_x = ref_cols/cols - scale_y = ref_rows/rows - - # rows = dataset.RasterYSize # 行数 - # cols = int(cols * scale) # 计算新的行列数 - # rows = int(rows * scale) - cols = ref_cols - rows = ref_rows - - geotrans = list(dataset.GetGeoTransform()) - geotrans[1] = geotrans[1] / scale_x # 像元宽度变为原来的scale倍 - geotrans[5] = geotrans[5] / scale_y # 像元高度变为原来的scale倍 - - if os.path.exists(target_file) and os.path.isfile(target_file): # 如果已存在同名影像 - os.remove(target_file) # 则删除之 - if not os.path.exists(os.path.split(target_file)[0]): - os.makedirs(os.path.split(target_file)[0]) - - band1 = dataset.GetRasterBand(1) - data_type = band1.DataType - target = dataset.GetDriver().Create(target_file, xsize=cols, ysize=rows, bands=band_count, - eType=data_type) - target.SetProjection(dataset.GetProjection()) # 设置投影坐标 - target.SetGeoTransform(geotrans) # 设置地理变换参数 - total = band_count + 1 - for index in range(1, total): - # 读取波段数据 - data = dataset.GetRasterBand(index).ReadAsArray(buf_xsize=cols, buf_ysize=rows) - out_band = target.GetRasterBand(index) - - no_data_value = dataset.GetRasterBand(index).GetNoDataValue() # 获取没有数据的点 - if not (no_data_value is None): - out_band.SetNoDataValue(no_data_value) - - out_band.WriteArray(data) # 写入数据到新影像中 - out_band.FlushCache() - out_band.ComputeBandStats(False) # 计算统计信息 - del dataset - del target - return True - - @staticmethod - def cv_mean_filter(out_path, in_path, filter_size): - """ - :param out_path:滤波后的影像 - :param in_path:滤波前的影像 - :param filter_size:滤波尺寸 - :return: True or False - """ - proj = ImageHandler.get_projection(in_path) - geotrans = ImageHandler.get_geotransform(in_path) - array = ImageHandler.get_band_array(in_path, 1) - array = cv2.blur(array, (filter_size, filter_size)) # 均值滤波 - ImageHandler.write_img(out_path, proj, geotrans, array) - return True - - @staticmethod - def check_LocalIncidenceAngle(out_tif_path, in_tif_path): - """ - 将角度的无效值设置为nan,把角度值转为弧度值 - :param out_tif_path:处理后影像路径 - :param in_tif_path:处理前影像路径 - """ - proj, geo, angle = ImageHandler.read_img(in_tif_path) - angle = angle.astype(np.float32, order='C') - angle[angle == -9999] = np.nan - - mean = np.nanmean(angle) - if mean > np.pi: - angle = np.deg2rad(angle)# 角度转弧度 - - angle[np.where(angle >= 0.5 * np.pi)] = np.nan - angle[np.where(angle < 0)] = np.nan - - ImageHandler.write_img(out_tif_path, proj, geo, angle) - - diff --git a/landcover-L-SAR/tool/algorithm/algtools/ROIAlg.py b/landcover-L-SAR/tool/algorithm/algtools/ROIAlg.py deleted file mode 100644 index 1bf9b56..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/ROIAlg.py +++ /dev/null @@ -1,237 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project:microproduct -@File:ROIAlg.py -@Function: -@Contact: -@Author:SHJ -@Date:2021/11/17 -@Version:1.0.0 -""" -import logging -from tool.algorithm.image.ImageHandle import ImageHandler -from tool.algorithm.algtools.PreProcess import PreProcess as pp -import numpy as np - - -logger = logging.getLogger("mylog") - - -class ROIAlg: - def __init__(self,): - pass - - @staticmethod - def roi_process(names, processing_path, processing_paras, preprocessed_paras): - roi_paths = [] - roi = ROIAlg() - for name in names: - if 'LocalIncidenceAngle' in name: - # 利用角度为nan生成Mask - pp.check_LocalIncidenceAngle(preprocessed_paras[name],preprocessed_paras[name]) - angle_nan_mask_path = processing_path + 'angle_nan_mask.tif' - roi.trans_tif2mask(angle_nan_mask_path, preprocessed_paras[name], np.nan) - roi_paths.append(angle_nan_mask_path) - elif ("HH" in name) or ("HV" in name) or ("VH" in name) or ("VV" in name): - # 利用影像的有效范围生成MASK - tif_mask_path = processing_path + name + "_tif_mask.tif" - roi.trans_tif2mask(tif_mask_path, preprocessed_paras[name], np.nan) - roi_paths.append(tif_mask_path) - elif name == 'Covering': - # 利用cover计算植被覆盖范围 - if processing_paras['CoveringIDs'] == 'empty': - cover_data = ImageHandler.get_data(preprocessed_paras[name]) - cover_data[np.where(np.isnan(cover_data))] = 0 - cover_id_list = list(np.unique(cover_data)) - else: - cover_id_list = list(processing_paras['CoveringIDs'].split(';')) - cover_id_list = [int(num) for num in cover_id_list] - cover_mask_path = processing_path + "cover_mask.tif" - roi.trans_cover2mask(cover_mask_path, preprocessed_paras[name], cover_id_list) - roi_paths.append(cover_mask_path) - elif name == "NDVI": - # 利用NDVI计算裸土范围该指数的输出值在 -1.0 和 1.0 之间,大部分表示植被量, - # 负值主要根据云、水和雪而生成 - # 接近零的值则主要根据岩石和裸土而生成。 - # 较低的(小于等于 0.1)NDVI 值表示岩石、沙石或雪覆盖的贫瘠区域。 - # 中等值(0.2 至 0.3)表示灌木丛和草地 - # 较高的值(0.6 至 0.8)表示温带雨林和热带雨林。 - ndvi_mask_path = processing_path + "ndvi_mask.tif" - ndvi_scope = list(processing_paras['NDVIScope'].split(';')) - threshold_of_ndvi_min = float(ndvi_scope[0]) - threshold_of_ndvi_max = float(ndvi_scope[1]) - roi.trans_tif2mask(ndvi_mask_path, preprocessed_paras[name], threshold_of_ndvi_min, threshold_of_ndvi_max) - roi_paths.append(ndvi_mask_path) - # else: - # # 其他特征影像 - # tif_mask_path = processing_path + name + "_mask.tif" - # roi.trans_tif2mask(tif_mask_path, preprocessed_paras[name], np.nan) - # roi_paths.append(tif_mask_path) - - bare_land_mask_path = processing_path + "bare_land_mask.tif" - for roi_path in roi_paths: - roi.combine_mask(bare_land_mask_path, roi_path, bare_land_mask_path) - return bare_land_mask_path - - @staticmethod - def roi_process_VP(names, processing_path, processing_paras, preprocessed_paras, file_name): - roi_paths = [] - roi = ROIAlg() - for name in names: - if 'LocalIncidenceAngle' in name: - # 利用角度为nan生成Mask - pp.check_LocalIncidenceAngle(preprocessed_paras[name], preprocessed_paras[name]) - angle_nan_mask_path = processing_path + 'angle_nan_mask.tif' - roi.trans_tif2mask(angle_nan_mask_path, preprocessed_paras[name], np.nan) - roi_paths.append(angle_nan_mask_path) - elif ("HH" in name) or ("HV" in name) or ("VH" in name) or ("VV" in name): - # 利用影像的有效范围生成MASK - tif_mask_path = processing_path + name + "_tif_mask.tif" - roi.trans_tif2mask(tif_mask_path, preprocessed_paras[name], np.nan) - roi_paths.append(tif_mask_path) - elif name == 'Covering': - # 利用cover计算植被覆盖范围 - cover_mask_path = processing_path + "cover_mask.tif" - if processing_paras['CoveringIDs'] == 'empty': - cover_data = ImageHandler.get_data(preprocessed_paras[file_name + '_' + name]) - cover_data[np.where(np.isnan(cover_data))] = 0 - cover_id_list = list(np.unique(cover_data)) - else: - cover_id_list = list(processing_paras['CoveringIDs'].split(';')) - cover_id_list = [int(num) for num in cover_id_list] - roi.trans_cover2mask(cover_mask_path, preprocessed_paras[file_name + '_' + name], cover_id_list) - roi_paths.append(cover_mask_path) - elif name == "NDVI": - # 利用NDVI计算裸土范围该指数的输出值在 -1.0 和 1.0 之间,大部分表示植被量, - # 负值主要根据云、水和雪而生成 - # 接近零的值则主要根据岩石和裸土而生成。 - # 较低的(小于等于 0.1)NDVI 值表示岩石、沙石或雪覆盖的贫瘠区域。 - # 中等值(0.2 至 0.3)表示灌木丛和草地 - # 较高的值(0.6 至 0.8)表示温带雨林和热带雨林。 - ndvi_mask_path = processing_path + "ndvi_mask.tif" - ndvi_scope = list(processing_paras['NDVIScope'].split(';')) - threshold_of_ndvi_min = float(ndvi_scope[0]) - threshold_of_ndvi_max = float(ndvi_scope[1]) - roi.trans_tif2mask(ndvi_mask_path, preprocessed_paras[name], threshold_of_ndvi_min, - threshold_of_ndvi_max) - roi_paths.append(ndvi_mask_path) - # else: - # # 其他特征影像 - # tif_mask_path = processing_path + name + "_mask.tif" - # roi.trans_tif2mask(tif_mask_path, preprocessed_paras[name], np.nan) - # roi_paths.append(tif_mask_path) - - bare_land_mask_path = processing_path + "bare_land_mask.tif" - for roi_path in roi_paths: - roi.combine_mask(bare_land_mask_path, roi_path, bare_land_mask_path) - return bare_land_mask_path - - @staticmethod - def trans_tif2mask(out_mask_path, in_tif_path, threshold_min, threshold_max = None): - """ - :param out_mask_path:mask输出路径 - :param in_tif_path:输入路径 - :param threshold_min:最小阈值 - :param threshold_max:最大阈值 - :return: True or False - """ - image_handler = ImageHandler() - proj = image_handler.get_projection(in_tif_path) - geotrans = image_handler.get_geotransform(in_tif_path) - array = image_handler.get_band_array(in_tif_path, 1) - if threshold_max == None and np.isnan(threshold_min)==True: - nan = np.isnan(array) - mask = (nan.astype(int) == 0).astype(int) - mask1 = ((array == -9999).astype(int) == 0).astype(int) - mask *= mask1 - image_handler.write_img(out_mask_path, proj, geotrans, mask) - else: - if threshold_min < threshold_max: - mask = ((array > threshold_min) & (array < threshold_max)).astype(int) - image_handler.write_img(out_mask_path, proj, geotrans, mask) - elif threshold_min > threshold_max: - mask = ((array < threshold_min) & (array > threshold_max)).astype(int) - image_handler.write_img(out_mask_path, proj, geotrans, mask) - elif threshold_max == threshold_min: - mask = ((array == threshold_min).astype(int) == 0).astype(int) - image_handler.write_img(out_mask_path, proj, geotrans, mask) - - logger.info("trans_tif2mask success, path: %s", out_mask_path) - return True - - @staticmethod - def trans_cover2mask(out_mask_path, in_tif_path, cover_id_list): - """ - :param out_mask_path:mask输出路径 - :param in_tif_path:输入路径 - :param cover_id_list 地表覆盖类型数据的id - :return: True or False - """ - image_handler = ImageHandler() - proj = image_handler.get_projection(in_tif_path) - geotrans = image_handler.get_geotransform(in_tif_path) - array = image_handler.get_band_array(in_tif_path, 1) - - mask = np.zeros(array.shape, dtype=bool) - for id in cover_id_list: - mask_tmp = (array == id) - mask = mask | mask_tmp - - mask = mask.astype(int) - image_handler.write_img(out_mask_path, proj, geotrans, mask) - - @staticmethod - def combine_mask(out_mask_path, in_main_mask_path, in_sub_mask_path): - """ - :param out_mask_path:输出路径 - :param in_main_mask_path:主mask路径,输出影像采用主mask的地理信息 - :param in_sub_mask_path:副mask路径 - """ - image_handler = ImageHandler() - proj = image_handler.get_projection(in_main_mask_path) - geotrans = image_handler.get_geotransform(in_main_mask_path) - main_array = image_handler.get_band_array(in_main_mask_path, 1) - if image_handler.get_dataset(in_sub_mask_path) != None: - sub_array = image_handler.get_band_array(in_sub_mask_path, 1) - main_array = main_array * sub_array - image_handler.write_img(out_mask_path, proj, geotrans, main_array) - logger.info("combine_mask success, path: %s", out_mask_path) - return True - - @staticmethod - def cal_roi(out_tif_path, in_tif_path, mask_path, background_value=1): - """ - :param out_tif_path:ROI的影像 - :param in_tif_path:计算ROI的影像 - :param mask_path:掩模 - :param background_value:无效区域设置的背景值 - :return: True or False - """ - image_handler = ImageHandler() - proj = image_handler.get_projection(in_tif_path) - geotrans = image_handler.get_geotransform(in_tif_path) - tif_array = image_handler.get_data(in_tif_path) # 读取所有波段的像元值存为数组 - mask_array = image_handler.get_band_array(mask_path, 1) - if len(tif_array.shape) == 3: - im_bands, im_height, im_width = tif_array.shape - else: - im_bands, (im_height, im_width) = 1, tif_array.shape - if im_bands == 1: - tif_array[np.isnan(mask_array)] = background_value - tif_array[mask_array == 0] = background_value - elif im_bands>1: - for i in range(0, im_bands): - tif_array[i, :, :][np.isnan(mask_array)] = background_value - tif_array[i, :, :][mask_array == 0] = background_value - image_handler.write_img(out_tif_path, proj, geotrans, tif_array, background_value) - logger.info("cal_roi success, path: %s", out_tif_path) - return True - -# if __name__ == '__main__': -# dir = r'G:\MicroWorkspace\C-SAR\SoilMoisture\Temporary\processing/' -# out_tif_path = dir + 'soil_moisture_roi.tif' -# in_tif_path = dir + 'soil_moisture.tif' -# mask_path = dir + 'bare_land_mask.tif' -# background_value = np.nan -# ROIAlg.cal_roi(out_tif_path, in_tif_path, mask_path, background_value) -# pass \ No newline at end of file diff --git a/landcover-L-SAR/tool/algorithm/algtools/RieveFilter.py b/landcover-L-SAR/tool/algorithm/algtools/RieveFilter.py deleted file mode 100644 index 4756a76..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/RieveFilter.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project:__init__.py -@File:sieve_filter.py -@Function:gdal斑点滤波功能 -@Contact: 'https://www.osgeo.cn/gdal/api/gdal_alg.html?highlight=gdalsievefilter#' - '_CPPv415GDALSieveFilter15GDALRasterBandH15GDALRasterBandH15GDALRasterBandHiiPPc16GDALProgressFuncPv' -@Author:SHJ -@Date:2021/8/30 8:42 -@Version:1.0.0 -""" -import logging -from osgeo import gdal -import numpy as np -# from onestar.soilMoisture.OneMoistureImage import ImageHandler -from tool.algorithm.image.ImageHandle import ImageHandler -logger = logging.getLogger("mylog") - - -def gdal_sieve_filter(dst_filename, src_filename, threshold=100, connectedness=4): - """ - 基于python GDAL栅格滤波 - :param dst_filename: 输出滤波后的影像 - :param src_filename: 输入需要处理的文件 - :param threshold: 滤波的值大小 - :param connectedness: 连通域, 范围:4或者8 - :return: - """ - # 4表示对角像素不被视为直接相邻用于多边形成员资格,8表示对角像素不相邻 - # connectedness = 4 - gdal.AllRegister() - # print('需要处理滤波的栅格文件:{},阈值(分辨率):{}'.format(src_filename, threshold)) - dataset = gdal.Open(src_filename, gdal.GA_Update) - if dataset is None: - logger.error('{}open tif fail!'.format(src_filename)) - return False - # 获取需要处理的源栅格波段 - src_band = dataset.GetRasterBand(1) - mask_band = src_band.GetMaskBand() - dst_band = src_band - prog_func = gdal.TermProgress_nocb - # 调用gdal滤波函数 - result = gdal.SieveFilter(src_band, mask_band, dst_band, threshold, connectedness, callback=prog_func) - if result != 0: - return False - proj = dataset.GetProjection() - geotransform = dataset.GetGeoTransform() - dst_array = dst_band.ReadAsArray(0, 0, dst_band.XSize, dst_band.YSize) - ImageHandler.write_img(dst_filename, proj, geotransform, dst_array) - del dataset - return True - -# -# if __name__ == '__main__': -# inputfile = r'D:\DATA\testdata\srcimg\GLCFCS30_E110N25.tif' -# outputfile = r'D:\DATA\testdata\srcimg\GLCFCS30_E110N25_sieve_filter.tif' -# flag = gdal_sieve_filter(outputfile, inputfile, threshold=100, connectedness=4) diff --git a/landcover-L-SAR/tool/algorithm/algtools/ScatteringAuxData.py b/landcover-L-SAR/tool/algorithm/algtools/ScatteringAuxData.py deleted file mode 100644 index 6a00c8f..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/ScatteringAuxData.py +++ /dev/null @@ -1,122 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project :microproduct -@File :ScatteringAuxData.py -@Function :后向散射 -@Author :SHJ -@Contact: -@Date :2022/6/29 -@Version :1.0.0 -修改历史: -[修改序列] [修改日期] [修改者] [修改内容] - 1 2022-6-29 石海军 1.兼容GF3元文件和正射校正元文件提取信息 -""" -import logging -from xml.etree.ElementTree import ElementTree -logger = logging.getLogger("mylog") - -class GF3L1AMetaData: - def __init__(self): - pass - @staticmethod - def get_QualifyValue(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - QualifyValue = float(root.find('imageinfo').find('QualifyValue').find(polarization).text) - return QualifyValue - - - @staticmethod - def get_Kdb(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - Kdb = float(root.find('processinfo').find('CalibrationConst').find(polarization).text) - return Kdb - -class OrthoMetaData: - def __init__(self): - pass - @staticmethod - def get_QualifyValue(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - QualifyValue = float(root.find('l1aInfo').find('imageinfo').find('QualifyValue').find(polarization).text) - return QualifyValue - - @staticmethod - def get_Kdb(meta_file_path, polarization): - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - Kdb = float(root.find('l1aInfo').find('processinfo').find('CalibrationConst').find(polarization).text) - return Kdb - - - @staticmethod - def get_RadarCenterFrequency(meta_file_path): - # 获取微波中心频率 - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - RadarCenterFrequency = float(root.find('sensor').find('RadarCenterFrequency').text) - return RadarCenterFrequency - - - @staticmethod - def get_lamda(meta_file_path): - # 获取微波波长,单位:m - tree = ElementTree() - tree.parse(meta_file_path) - root = tree.getroot() - lamda = float(root.find('sensor').find('lamda').text) - return lamda - -class ScatteringAuxData: - def __init__(self): - pass - - @staticmethod - def get_QualifyValue(meta_file_path, polarization): - try: - QualifyValue = OrthoMetaData.get_QualifyValue(meta_file_path, polarization) - except Exception: - logger.warning('OrthoMetaData.get_QualifyValue() error!') - QualifyValue = GF3L1AMetaData.get_QualifyValue(meta_file_path, polarization) - logger.info('GF3L1AMetaData.get_QualifyValue() success!') - return QualifyValue - - @staticmethod - def get_Kdb(meta_file_path, polarization): - try: - Kdb = OrthoMetaData.get_Kdb(meta_file_path, polarization) - except Exception: - logger.warning('OrthoMetaData.get_Kdb() error!') - Kdb = GF3L1AMetaData.get_Kdb(meta_file_path, polarization) - logger.info('GF3L1AMetaData.get_Kdb() success!') - return Kdb - - @staticmethod - def get_RadarCenterFrequency(meta_file_path): - # 获取微波中心频率,单位GHz - RadarCenterFrequency = OrthoMetaData.get_RadarCenterFrequency(meta_file_path) - return RadarCenterFrequency - - @staticmethod - def get_lamda(meta_file_path): - # 获取微波波长,单位:m - lamda = OrthoMetaData.get_lamda(meta_file_path) - return lamda - -# if __name__ == '__main__': -# A = ScatteringAuxData() -# dir = 'G:\MicroWorkspace\C-SAR\AuxSAR\GF3_KAS_FSII_020008_E113.2_N23.1_20200528_L1A_HHHV_L10004829485_geo/' -# path = dir + 'GF3_KAS_FSII_020008_E113.2_N23.1_20200528_L1A_HHHV_L10004829485.meta.xml' -# path1 = dir + 'OrthoProduct.meta.xml' -# t1 = A.get_QualifyValue(path, 'HH') -# t2 = A.get_Kdb(path, 'HH') -# t3 = A.get_RadarCenterFrequency(path) -# t4 = A.get_lamda(path) -# pass \ No newline at end of file diff --git a/landcover-L-SAR/tool/algorithm/algtools/calculateLocalIncident/calculateLocalIncident.py b/landcover-L-SAR/tool/algorithm/algtools/calculateLocalIncident/calculateLocalIncident.py deleted file mode 100644 index c2b634d..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/calculateLocalIncident/calculateLocalIncident.py +++ /dev/null @@ -1,414 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project :microproduct -@File :CalculateIncident.py -@Function :计算、局部入射角计算 -@Author :LMM -@Date :2021/8/25 14:17 -@Version :1.0.0 -""" -import os -import numpy as np -from osgeo import gdal -from osgeo import gdalconst -import gc -import math -from xml.dom import minidom # 不需要安装,默认环境里就有 - - -class CalculateIncident: - def __init__(self): - pass - - @staticmethod - def add_round(npgrid): - """ - 边缘填充一圈,然后输出填充得到的矩阵 - param:npgrid dem数组 - """ - ny, nx = npgrid.shape # ny:行数,nx:列数 - zbc = np.zeros((ny + 2, nx + 2)) - zbc[1:-1, 1:-1] = npgrid - # 四边 - zbc[0, 1:-1] = npgrid[0, :] - zbc[-1, 1:-1] = npgrid[-1, :] - zbc[1:-1, 0] = npgrid[:, 0] - zbc[1:-1, -1] = npgrid[:, -1] - # 角点 - zbc[0, 0] = npgrid[0, 0] - zbc[0, -1] = npgrid[0, -1] - zbc[-1, 0] = npgrid[-1, 0] - zbc[-1, -1] = npgrid[-1, -1] - print("输出填充后的数组的形状", zbc.shape) - return zbc - - @staticmethod - def cal_dxdy(zbc, dx): - """ - 计算dx,dy - param:zbc填充后的数组 - param:dx dem数据像元大小 - - """ - we_x = ((zbc[1:-1, :-2]) - (zbc[1:-1, 2:])) / dx / 2 # WE方向 - ns_y = ((zbc[2:, 1:-1]) - (zbc[:-2, 1:-1])) / dx / 2 # NS方向 - print("输出Sx的数组的形状", we_x.shape, "输出Sy的数组的形状", ns_y.shape) - sx = we_x[1:-1, 1:-1] - sy = ns_y[1:-1, 1:-1] - # np.savetxt("dxdy.csv",dx,delimiter=",") - print("输出Sx2的数组的形状", sx.shape, "输出Sy2的数组的形状", sy.shape) - return sx, sy - - @staticmethod - def cal_slopasp(dx, dy): - # 计算坡度\坡向 - # 坡度计算 slope - slope = (np.arctan(np.sqrt(dx * dx + dy * dy))) * 57.29578 # 转换成°,57.29578=180/math.pi - slope = slope[1:-1, 1:-1] - # 坡向计算 aspect - aspect = np.ones([dx.shape[0], dx.shape[1]]).astype(np.float32) # 生成一个全是0的数组 - - # dx = dx.astype(np.float32) - # dy = dy.astype(np.float32) - # a1=(np.where(dx==0) and np.where(dy ==0)) - # print(a1) - # aspect[a1]=-1 - # a2 = (np.where(dx == 0) and np.where(dy > 0)) - # aspect[a2] =0.0 - # a3 = (np.where(dx == 0) and np.where(dy <0)) - # aspect[a3] =180.0 - # a4 = (np.where(dx > 0) and np.where(dy ==0)) - # aspect[a4] =90.0 - # a5 = (np.where(dx < 0) and np.where(dy ==0)) - # aspect[a5] =270.0 - # a6 = (np.where(dx != 0) or np.where(dy !=0)) - # b=dy[a6] - # print(":", 1) - # aspect[a6] =float(math.atan2(dy[i, j], dx[i, j])) * 57.29578 - # a7=np.where(aspect[a6]< 0.0) - # aspect[a7] = 90.0 - aspect[a7] - # a8=np.where(aspect[a6]> 90.0) - # aspect[a8] = 450.0- aspect[a8] - # a9 =np.where(aspect[a6] >= 0 or aspect[a6] <= 90) - # aspect[a9] =90.0 - aspect[a9] - - for i in range(dx.shape[0]): - for j in range(dx.shape[1]): - x = float(dx[i, j]) - y = float(dy[i, j]) - if (x == 0.0) & (y == 0.0): - aspect[i, j] = -1 - elif x == 0.0: - if y > 0.0: - aspect[i, j] = 0.0 - else: - aspect[i, j] = 180.0 - elif y == 0.0: - if x > 0.0: - aspect[i, j] = 90.0 - else: - aspect[i, j] = 270.0 - else: - aspect[i, j] = float(math.atan2(y, x)) * 57.29578 # 范围(-Π/2,Π/2) - if aspect[i, j] < 0.0: - aspect[i, j] = 90.0 - aspect[i, j] - elif aspect[i, j] > 90.0: - aspect[i, j] = 450.0 - aspect[i, j] - else: - aspect[i, j] = 90.0 - aspect[i, j] - print("输出aspect形状:", aspect.shape) # 3599, 3599 - print("输出aspect:", aspect) - return slope, aspect - - def creat_twofile(self, dem_file_path, slope_out_path, aspect_out_path): - """ - 生成坡度图、坡向图 - param: path_file1 为输入文件tif数据的文件路径 - - """ - if os.path.isfile(dem_file_path): - print("高程数据文件存在") - else: - print("高程数据文件不存在") - - dataset_caijian = gdal.Open(dem_file_path) - x_size = dataset_caijian.RasterXSize - y_size = dataset_caijian.RasterYSize - geo = dataset_caijian.GetGeoTransform() - pro = dataset_caijian.GetProjection() - array0 = dataset_caijian.ReadAsArray(0, 0, x_size, y_size) - print("输出dem数据的数组", array0) - zbc = self.add_round(array0) - sx, sy = self.cal_dxdy(zbc, 30) - slope, aspect = self.cal_slopasp(sx, sy) - - driver = gdal.GetDriverByName("GTiff") # 创建一个数据格式 - driver.Register() - newfile = driver.Create(slope_out_path, x_size, y_size, 1, gdal.GDT_Float32) # 存放路径文件名,长,宽,波段,数据类型 - newfile.SetProjection(pro) - geo = [geo[0], geo[1], 0, geo[3], 0, -geo[1]] - newfile.SetGeoTransform(geo) - newfile.GetRasterBand(1).WriteArray(slope) - - driver2 = gdal.GetDriverByName("GTiff") # 创建一个数据格式 - driver2.Register() - newfile2 = driver2.Create(aspect_out_path, x_size, y_size, 1, gdal.GDT_Float32) # 存放路径文件名,长,宽,波段,数据类型 - geo = [geo[0], geo[1], 0, geo[3], 0, -geo[1]] - newfile2.SetGeoTransform(geo) - newfile2.GetRasterBand(1).WriteArray(aspect) - - @staticmethod - def resampling(input_file1, input_file2, ref_file, output_file, output_file2): - """ - 采用gdal.Warp()方法进行重采样,差值法为双线性插值 - :param input_file1 slope path - :param input_file2 aspect path - :param ref_file: 参考图像路径 - :param output_file: slope path - :param output_file2 aspect path - :return: - """ - gdal.AllRegister() - in_ds1 = gdal.Open(input_file1) - in_ds2 = gdal.Open(input_file2) - ref_ds = gdal.Open(ref_file, gdal.GA_ReadOnly) - - # 获取输入影像信息 - input_file_proj = in_ds1.GetProjection() - # inputefileTrans = in_ds1.GetGeoTransform() - reference_file_proj = ref_ds.GetProjection() - reference_file_trans = ref_ds.GetGeoTransform() - - nbands = in_ds1.RasterCount - bandinputfile1 = in_ds1.GetRasterBand(1) - bandinputfile2 = in_ds2.GetRasterBand(1) - x = ref_ds.RasterXSize - y = ref_ds.RasterYSize - - # 创建重采样输出文件(设置投影及六参数) - driver1 = gdal.GetDriverByName('GTiff') - output1 = driver1.Create(output_file, x, y, nbands, bandinputfile1.DataType) - output1.SetGeoTransform(reference_file_trans) - output1.SetProjection(reference_file_proj) - # options = gdal.WarpOptions(srcSRS=inputProj, dstSRS=referencefileProj, resampleAlg=gdalconst.GRA_Bilinear) - # resampleAlg = gdalconst.GRA_NearestNeighbour - gdal.ReprojectImage(in_ds1, output1, input_file_proj, reference_file_proj, gdalconst.GRA_Bilinear) - - driver2 = gdal.GetDriverByName('GTiff') - output2 = driver2.Create(output_file2, x, y, nbands, bandinputfile2.DataType) - output2.SetGeoTransform(reference_file_trans) - output2.SetProjection(reference_file_proj) - # options = gdal.WarpOptions(srcSRS=inputProj, dstSRS=referencefileProj, resampleAlg=gdalconst.GRA_Bilinear) - # resampleAlg = gdalconst.GRA_NearestNeighbour - gdal.ReprojectImage(in_ds2, output2, input_file_proj, reference_file_proj, gdalconst.GRA_Bilinear) - - @staticmethod - def getorbitparameter(xml_path): - """ - 从轨道参数文件xml中获取升降轨信息、影像四个角的经纬度坐标 - - """ - # 打开xml文档,根据路径初始化DOM - doc = minidom.parse(xml_path) - # 得到xml文档元素对象,初始化root对象 - root = doc.documentElement - - # 输出升降轨信息,DEC降轨,ASC升轨 - direction = root.getElementsByTagName("Direction")[0] - # print("输出Direction的子节点列表",Direction.firstChild.data) - pd = direction.firstChild.data - - imageinfo = root.getElementsByTagName("imageinfo")[0] - # 输出topLeft的纬度和经度 - top_left = imageinfo.getElementsByTagName("topLeft")[0] - latitude = top_left.getElementsByTagName("latitude")[0] - longitude = top_left.getElementsByTagName("longitude")[0] - # print("输出topLeft的纬度lat和经度lon:", latitude.firstChild.data,longitude.firstChild.data) - tl_lat, tl_lon = latitude.firstChild.data, longitude.firstChild.data - - # 输出topRight的纬度和经度 - top_right = imageinfo.getElementsByTagName("topRight")[0] - latitude = top_right.getElementsByTagName("latitude")[0] - longitude = top_right.getElementsByTagName("longitude")[0] - # print("输出topRight的纬度lat和经度lon:", latitude.firstChild.data,longitude.firstChild.data) - tr_lat, tr_lon = latitude.firstChild.data, longitude.firstChild.data - - # 输出 bottomLeft的纬度和经度 - bottom_left = imageinfo.getElementsByTagName("bottomLeft")[0] - latitude = bottom_left.getElementsByTagName("latitude")[0] - longitude = bottom_left.getElementsByTagName("longitude")[0] - # print("输出bottomLeft的纬度lat和经度lon:", latitude.firstChild.data,longitude.firstChild.data) - bl_lat, bl_lon = latitude.firstChild.data, longitude.firstChild.data - - # 输出 bottomRight的纬度和经度 - bottom_right = imageinfo.getElementsByTagName("bottomRight")[0] - latitude = bottom_right.getElementsByTagName("latitude")[0] - longitude = bottom_right.getElementsByTagName("longitude")[0] - # print("输出bottomRight的纬度lat和经度lon:", latitude.firstChild.data,longitude.firstChild.data) - br_lat, br_lon = latitude.firstChild.data, longitude.firstChild.data - print("pd,tl_lat,tl_lon,tr_lat,tr_lon,bl_lat,bl_lon,br_lat,br_lon", pd, tl_lat, tl_lon, tr_lat, tr_lon, bl_lat, - bl_lon, br_lat, br_lon) - return pd, tl_lat, tl_lon, tr_lat, tr_lon, bl_lat, bl_lon, br_lat, br_lon - - def get_rparademeter(self, xml_path): - """ - 计算雷达视线向方向角R - """ - pd, tl_lat, tl_lon, tr_lat, tr_lon, bl_lat, bl_lon, br_lat, br_lon = self.getorbitparameter(xml_path) - - tl_lat = float(tl_lat) # 原来的数是带有小数点的字符串,int会报错,使用float - tl_lon = float(tl_lon) - # tr_lat = float(tr_lat) - # tr_lon = float(tr_lon) - bl_lat = float(bl_lat) - bl_lon = float(bl_lon) - # br_lat = float(br_lat) - # br_lon = float(br_lon) - - if pd == "DEC": - # 降轨 - b = np.arctan((tl_lat - bl_lat) / (tl_lon - bl_lon)) * 57.29578 - r = 270 + b - return r - # tl_lat, tl_lon = lonlat2geo(tl_lat, tl_lon) - # tr_lat, tr_lon = lonlat2geo(tr_lat, tr_lon) - # bl_lat, bl_lon = lonlat2geo(bl_lat, bl_lon) - # br_lat, br_lon = lonlat2geo(br_lat, br_lon) - # B2 = np.arctan((tl_lat - bl_lat) / (tl_lon - bl_lon)) * 57.29578 - # R2 = 270 + B2 - # print(("输出R2:", R2)) - if pd == "ASC": - # 升轨 - b = np.arctan((tl_lat - bl_lat) / (tl_lon - bl_lon)) * 57.29578 - return b - - def clau(self, pathfile1, pathfile2, pathfile3, xml_path, save_localangle_path): - """ - 计算局部入射角 - param: pathfile1是slope的坡度图路径 - param: pathfile2是aspect的坡向图路径 - param: pathfile3是入射角文件的路径 - param: xml_path是轨道参数文件 - r是雷达视线向方位角 - """ - r = self.get_rparademeter(xml_path) - pd, tl_lat, tl_lon, tr_lat, tr_lon, bl_lat, bl_lon, br_lat, br_lon = self.getorbitparameter(xml_path) - print("输出升降轨:", pd) - dataset = gdal.Open(pathfile1) - x = dataset.RasterXSize - y = dataset.RasterYSize - print("输出slope的行、列:", x, y) - slope_array = dataset.ReadAsArray(0, 0, x, y) - - dataset2 = gdal.Open(pathfile2) - x2 = dataset2.RasterXSize - y2 = dataset2.RasterYSize - print("输出aspect的行、列:", x2, y2) - aspect_array = dataset2.ReadAsArray(0, 0, x2, y2) - - dataset3 = gdal.Open(pathfile3) - x3 = dataset3.RasterXSize - y3 = dataset3.RasterYSize - geo3 = dataset3.GetGeoTransform() - pro3 = dataset3.GetProjection() - print("输出入射角文件的行、列:", x3, y3) - - rushe_array = dataset3.ReadAsArray(0, 0, x3, y3) - # b0 = np.where(rushe_array > 0.00001, 0, 1) - radina_value = 0 - if pd == "DEC": - # 降轨数据 - # 雷达视线角-坡度角在90度到270度之间 - where_0 = np.where(rushe_array == 0) - - bb1 = (r-aspect_array).all() and (r-aspect_array).all() - bb2 = np.where(90 < bb1 < 270, 1, 0) - b1 = (bb1 and bb2) - # b1 = np.where(90 < ((r-aspect_array).all()) and ((r-aspect_array).all()) < 270, 1, 0) - c1 = np.cos(rushe_array*(math.pi/180)) * np.cos(slope_array*(math.pi/180)) - np.sin(slope_array*(math.pi/180)) * np.sin( - rushe_array*(math.pi/180)) * np.cos((r - aspect_array)*(math.pi/180)) - d1 = b1 * c1 - # 雷达视线角-坡度角=90度或=270度时 - b2 = np.where((r-aspect_array == 90) | (r-aspect_array == 270), 1, 0) - d2 = b2*c1 - # 雷达视线角-坡度角在90度到270度之间 - b3 = 1-b1-b2 - c3 = np.cos(rushe_array*(math.pi/180)) * np.cos(slope_array*(math.pi/180)) + np.sin( - slope_array*(math.pi/180)) * np.sin(rushe_array*(math.pi/180)) * np.cos((r - aspect_array)*(math.pi/180)) - d3 = b3 * c3 - del b1, b2, b3, c3, c1 - gc.collect() - radina_value = d1 + d2 + d3 - radina_value[where_0] = 0 - del d1, d2, d3 - gc.collect() - if pd == "ASC": - # 升轨数据 - # 坡度-雷达视线角在90度到270度之间 - where_0 = np.where(rushe_array == 0) - - bb1 = (r-aspect_array).all() and (r-aspect_array).all() - bb2 = np.where(90 < bb1 < 270, 1, 0) - b1 = (bb1 and bb2) - # b1 = np.where(90 < ((r-aspect_array).all()) and ((r-aspect_array).all()) < 270, 1, 0) - c1 = np.cos(rushe_array*(math.pi/180)) * np.cos(slope_array*(math.pi/180)) + np.sin( - slope_array*(math.pi/180)) * np.sin(rushe_array*(math.pi/180)) * np.cos((r - aspect_array)*(math.pi/180)) - d1 = b1 * c1 - # 坡度-雷达视线角=90或=270时 - b2 = np.where((aspect_array-r == 90) | (aspect_array-r == 270), 1, 0) - d2 = b2 * c1 - # 坡度-雷达视线角在0-90度或270-360度之间 - b3 = 1 - b1-b2 - c3 = np.cos(rushe_array*(math.pi/180)) * np.cos(slope_array*(math.pi/180)) - np.sin(slope_array*(math.pi/180)) *\ - np.sin(rushe_array*(math.pi/180)) * np.cos((r - aspect_array)*(math.pi/180)) - d3 = b3 * c3 - radina_value = d1 + d2 + d3 - radina_value[where_0] = 0 - del b1, b2, b3, c3, c1, d1, d2, d3 - gc.collect() - jubu_o = 57.29578 * np.arccos(radina_value) - print("输出局部入射角", jubu_o) - driver = gdal.GetDriverByName("GTiff") # 创建一个数据格式 - driver.Register() - newfile = driver.Create(save_localangle_path, x3, y3, 1, gdal.GDT_Float32) # 存放路径文件名,长,宽,波段,数据类型 - newfile.SetProjection(pro3) - newfile.SetGeoTransform(geo3) - newfile.GetRasterBand(1).WriteArray(jubu_o) - - def localangle(self, dem_path, incidence_angle_path, orbital_parameters_path): - """ - 获取输入文件的路径 - 计算坡度图、坡向图 - 计算局部入射角 - """ - para_names = ["Dem", "IncidenceAngle", "OrbitalParameters", "经验A"] - if len(para_names) == 0: - return False - # 获取三个文件的路径 - - # print("输出三个文件路径",Dem_path,IncidenceAngle_path,OrbitalParameters_path) - # 确定坡度、坡向的输出路径,输出坡度、坡向图 - slope_out_path = r"D:\MicroWorkspace\LeafAreaIndex\Temporary\UnClipslope.tif" - aspect_out_path = r"D:\MicroWorkspace\LeafAreaIndex\Temporary\UnClipaspect.tif" - print("slope_out_path的路径是", slope_out_path) - print("aspect_out_path的路径是", aspect_out_path) - self.creat_twofile(dem_path, slope_out_path, aspect_out_path) - # 根据入射角文件对坡度坡向图进行裁剪与重采样 - slope_out_path2 = r"D:\MicroWorkspace\LocaLangle\Temporary\Clipslope.tif" - aspect_out_path2 = r"D:\MicroWorkspace\LocaLangle\Temporary\Clipaspect.tif" - self.resampling(slope_out_path, aspect_out_path, incidence_angle_path, slope_out_path2, aspect_out_path2) - - # 输出局部入射角文件 - save_localangle_path = r"D:\\MicroWorkspace\\LocaLangle\\Temporary\\\localangle.tif" - self.clau(slope_out_path2, aspect_out_path2, incidence_angle_path, - orbital_parameters_path, save_localangle_path) - - -# if __name__ == '__main__': -# calu_incident = CalculateIncident() -# Dem_path = "D:\\MicroWorkspace\\LocaLangle\\Input\\dem.tif" -# IncidenceAngle_path = "D:\\MicroWorkspace\\LocaLangle\\Input\\RSJ.tif" -# OrbitalParameters_path = "D:\\MicroWorkspace\\LocaLangle\\Input\\" \ -# "GF3_KAS_FSII_020008_E113.2_N23.1_20200528_L1A_HHHV_L10004829485.meta.xml" -# calu_incident.localangle(Dem_path, IncidenceAngle_path, OrbitalParameters_path) -# print('done') diff --git a/landcover-L-SAR/tool/algorithm/algtools/filter/build/lee_Filter/lee_Filter_c.c b/landcover-L-SAR/tool/algorithm/algtools/filter/build/lee_Filter/lee_Filter_c.c deleted file mode 100644 index f14bfc5..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/filter/build/lee_Filter/lee_Filter_c.c +++ /dev/null @@ -1,7654 +0,0 @@ -/* Generated by Cython 0.29.24 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [], - "name": "lee_Filter_c", - "sources": [ - "./lee_Filter/lee_Filter_c.pyx" - ] - }, - "module_name": "lee_Filter_c" -} -END: Cython Metadata */ - -#ifndef PY_SSIZE_T_CLEAN -#define PY_SSIZE_T_CLEAN -#endif /* PY_SSIZE_T_CLEAN */ -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_29_24" -#define CYTHON_HEX_VERSION 0x001D18F0 -#define CYTHON_FUTURE_DIVISION 0 -#include -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif - #ifndef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) - #endif - #ifndef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK - #ifdef SIZEOF_VOID_P - enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; - #endif -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" -#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#endif - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#ifndef METH_STACKLESS - #define METH_STACKLESS 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 - #define PyMem_RawMalloc(n) PyMem_Malloc(n) - #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) - #define PyMem_RawFree(p) PyMem_Free(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #if defined(PyUnicode_IS_READY) - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #else - #define __Pyx_PyUnicode_READY(op) (0) - #endif - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) - #endif - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) - #endif -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact -#ifndef PyObject_Unicode - #define PyObject_Unicode PyObject_Str -#endif -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if PY_VERSION_HEX >= 0x030900A4 - #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) -#else - #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - -#define __PYX_MARK_ERR_POS(f_index, lineno) \ - { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } -#define __PYX_ERR(f_index, lineno, Ln_error) \ - { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__lee_Filter_c -#define __PYX_HAVE_API__lee_Filter_c -/* Early includes */ -#include -#include -#include "numpy/arrayobject.h" -#include "numpy/ndarrayobject.h" -#include "numpy/ndarraytypes.h" -#include "numpy/arrayscalars.h" -#include "numpy/ufuncobject.h" - - /* NumPy API declarations from "numpy/__init__.pxd" */ - -#include -#ifdef _OPENMP -#include -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { - return (size_t) i < (size_t) limit; -} -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - -/* Header.proto */ -#if !defined(CYTHON_CCOMPLEX) - #if defined(__cplusplus) - #define CYTHON_CCOMPLEX 1 - #elif defined(_Complex_I) - #define CYTHON_CCOMPLEX 1 - #else - #define CYTHON_CCOMPLEX 0 - #endif -#endif -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #include - #else - #include - #endif -#endif -#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) - #undef _Complex_I - #define _Complex_I 1.0fj -#endif - - -static const char *__pyx_f[] = { - "lee_Filter\\lee_Filter_c.pyx", - "__init__.pxd", - "type.pxd", -}; -/* BufferFormatStructs.proto */ -#define IS_UNSIGNED(type) (((type) -1) > 0) -struct __Pyx_StructField_; -#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) -typedef struct { - const char* name; - struct __Pyx_StructField_* fields; - size_t size; - size_t arraysize[8]; - int ndim; - char typegroup; - char is_unsigned; - int flags; -} __Pyx_TypeInfo; -typedef struct __Pyx_StructField_ { - __Pyx_TypeInfo* type; - const char* name; - size_t offset; -} __Pyx_StructField; -typedef struct { - __Pyx_StructField* field; - size_t parent_offset; -} __Pyx_BufFmt_StackElem; -typedef struct { - __Pyx_StructField root; - __Pyx_BufFmt_StackElem* head; - size_t fmt_offset; - size_t new_count, enc_count; - size_t struct_alignment; - int is_complex; - char enc_type; - char new_packmode; - char enc_packmode; - char is_valid_array; -} __Pyx_BufFmt_Context; - - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":690 - * # in Cython to enable them only on the right systems. - * - * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - */ -typedef npy_int8 __pyx_t_5numpy_int8_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":691 - * - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t - */ -typedef npy_int16 __pyx_t_5numpy_int16_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":692 - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< - * ctypedef npy_int64 int64_t - * #ctypedef npy_int96 int96_t - */ -typedef npy_int32 __pyx_t_5numpy_int32_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":693 - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< - * #ctypedef npy_int96 int96_t - * #ctypedef npy_int128 int128_t - */ -typedef npy_int64 __pyx_t_5numpy_int64_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":697 - * #ctypedef npy_int128 int128_t - * - * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - */ -typedef npy_uint8 __pyx_t_5numpy_uint8_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":698 - * - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t - */ -typedef npy_uint16 __pyx_t_5numpy_uint16_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":699 - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< - * ctypedef npy_uint64 uint64_t - * #ctypedef npy_uint96 uint96_t - */ -typedef npy_uint32 __pyx_t_5numpy_uint32_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":700 - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< - * #ctypedef npy_uint96 uint96_t - * #ctypedef npy_uint128 uint128_t - */ -typedef npy_uint64 __pyx_t_5numpy_uint64_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":704 - * #ctypedef npy_uint128 uint128_t - * - * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< - * ctypedef npy_float64 float64_t - * #ctypedef npy_float80 float80_t - */ -typedef npy_float32 __pyx_t_5numpy_float32_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":705 - * - * ctypedef npy_float32 float32_t - * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< - * #ctypedef npy_float80 float80_t - * #ctypedef npy_float128 float128_t - */ -typedef npy_float64 __pyx_t_5numpy_float64_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":714 - * # The int types are mapped a bit surprising -- - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong long_t - * ctypedef npy_longlong longlong_t - */ -typedef npy_long __pyx_t_5numpy_int_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":715 - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t - * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong longlong_t - * - */ -typedef npy_longlong __pyx_t_5numpy_long_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":716 - * ctypedef npy_long int_t - * ctypedef npy_longlong long_t - * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_ulong uint_t - */ -typedef npy_longlong __pyx_t_5numpy_longlong_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":718 - * ctypedef npy_longlong longlong_t - * - * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulong_t - * ctypedef npy_ulonglong ulonglong_t - */ -typedef npy_ulong __pyx_t_5numpy_uint_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":719 - * - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulonglong_t - * - */ -typedef npy_ulonglong __pyx_t_5numpy_ulong_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":720 - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulong_t - * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_intp intp_t - */ -typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":722 - * ctypedef npy_ulonglong ulonglong_t - * - * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< - * ctypedef npy_uintp uintp_t - * - */ -typedef npy_intp __pyx_t_5numpy_intp_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":723 - * - * ctypedef npy_intp intp_t - * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< - * - * ctypedef npy_double float_t - */ -typedef npy_uintp __pyx_t_5numpy_uintp_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":725 - * ctypedef npy_uintp uintp_t - * - * ctypedef npy_double float_t # <<<<<<<<<<<<<< - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t - */ -typedef npy_double __pyx_t_5numpy_float_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":726 - * - * ctypedef npy_double float_t - * ctypedef npy_double double_t # <<<<<<<<<<<<<< - * ctypedef npy_longdouble longdouble_t - * - */ -typedef npy_double __pyx_t_5numpy_double_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":727 - * ctypedef npy_double float_t - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cfloat cfloat_t - */ -typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* Declarations.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - typedef ::std::complex< float > __pyx_t_float_complex; - #else - typedef float _Complex __pyx_t_float_complex; - #endif -#else - typedef struct { float real, imag; } __pyx_t_float_complex; -#endif -static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); - -/* Declarations.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - typedef ::std::complex< double > __pyx_t_double_complex; - #else - typedef double _Complex __pyx_t_double_complex; - #endif -#else - typedef struct { double real, imag; } __pyx_t_double_complex; -#endif -static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); - - -/*--- Type declarations ---*/ - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":729 - * ctypedef npy_longdouble longdouble_t - * - * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t - */ -typedef npy_cfloat __pyx_t_5numpy_cfloat_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":730 - * - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< - * ctypedef npy_clongdouble clongdouble_t - * - */ -typedef npy_cdouble __pyx_t_5numpy_cdouble_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":731 - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cdouble complex_t - */ -typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":733 - * ctypedef npy_clongdouble clongdouble_t - * - * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew1(a): - */ -typedef npy_cdouble __pyx_t_5numpy_complex_t; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* IsLittleEndian.proto */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); - -/* BufferFormatCheck.proto */ -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); - -/* BufferGetAndValidate.proto */ -#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ - ((obj == Py_None || obj == NULL) ?\ - (__Pyx_ZeroBuffer(buf), 0) :\ - __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) -static int __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj, - __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); -static void __Pyx_ZeroBuffer(Py_buffer* buf); -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; -static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ - ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallNoArg.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -#else -#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* None.proto */ -static CYTHON_INLINE long __Pyx_div_long(long, long); - -/* BufferIndexError.proto */ -static void __Pyx_RaiseBufferIndexError(int axis); - -#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1) -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* BufferFallbackError.proto */ -static void __Pyx_RaiseBufferFallbackError(void); - -/* PyDictVersioning.proto */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) -#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ - (version_var) = __PYX_GET_DICT_VERSION(dict);\ - (cache_var) = (value); -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __pyx_dict_cached_value;\ - } else {\ - (VAR) = __pyx_dict_cached_value = (LOOKUP);\ - __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ - }\ -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); -#else -#define __PYX_GET_DICT_VERSION(dict) (0) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); -#endif - -/* GetModuleGlobalName.proto */ -#if CYTHON_USE_DICT_VERSIONS -#define __Pyx_GetModuleGlobalName(var, name) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ - (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ - __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} -#define __Pyx_GetModuleGlobalNameUncached(var, name) {\ - PY_UINT64_T __pyx_dict_version;\ - PyObject *__pyx_dict_cached_value;\ - (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); -#else -#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) -#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); -#endif - -/* PyObjectCall2Args.proto */ -static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); - -/* PyFloatBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace, zerodivision_check)\ - ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2))) - #endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* GetTopmostException.proto */ -#if CYTHON_USE_EXC_INFO_STACK -static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* TypeImport.proto */ -#ifndef __PYX_HAVE_RT_ImportType_proto -#define __PYX_HAVE_RT_ImportType_proto -enum __Pyx_ImportType_CheckSize { - __Pyx_ImportType_CheckSize_Error = 0, - __Pyx_ImportType_CheckSize_Warn = 1, - __Pyx_ImportType_CheckSize_Ignore = 2 -}; -static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); -#endif - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* BufferStructDeclare.proto */ -typedef struct { - Py_ssize_t shape, strides, suboffsets; -} __Pyx_Buf_DimInfo; -typedef struct { - size_t refcount; - Py_buffer pybuffer; -} __Pyx_Buffer; -typedef struct { - __Pyx_Buffer *rcbuffer; - char *data; - __Pyx_Buf_DimInfo diminfo[8]; -} __Pyx_LocalBuf_ND; - -#if PY_MAJOR_VERSION < 3 - static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); - static void __Pyx_ReleaseBuffer(Py_buffer *view); -#else - #define __Pyx_GetBuffer PyObject_GetBuffer - #define __Pyx_ReleaseBuffer PyBuffer_Release -#endif - - -/* GCCDiagnostics.proto */ -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#define __Pyx_HAS_GCC_DIAGNOSTIC -#endif - -/* RealImag.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #define __Pyx_CREAL(z) ((z).real()) - #define __Pyx_CIMAG(z) ((z).imag()) - #else - #define __Pyx_CREAL(z) (__real__(z)) - #define __Pyx_CIMAG(z) (__imag__(z)) - #endif -#else - #define __Pyx_CREAL(z) ((z).real) - #define __Pyx_CIMAG(z) ((z).imag) -#endif -#if defined(__cplusplus) && CYTHON_CCOMPLEX\ - && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) - #define __Pyx_SET_CREAL(z,x) ((z).real(x)) - #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) -#else - #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) - #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX - #define __Pyx_c_eq_float(a, b) ((a)==(b)) - #define __Pyx_c_sum_float(a, b) ((a)+(b)) - #define __Pyx_c_diff_float(a, b) ((a)-(b)) - #define __Pyx_c_prod_float(a, b) ((a)*(b)) - #define __Pyx_c_quot_float(a, b) ((a)/(b)) - #define __Pyx_c_neg_float(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_float(z) ((z)==(float)0) - #define __Pyx_c_conj_float(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_float(z) (::std::abs(z)) - #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_float(z) ((z)==0) - #define __Pyx_c_conj_float(z) (conjf(z)) - #if 1 - #define __Pyx_c_abs_float(z) (cabsf(z)) - #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); - #endif -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX - #define __Pyx_c_eq_double(a, b) ((a)==(b)) - #define __Pyx_c_sum_double(a, b) ((a)+(b)) - #define __Pyx_c_diff_double(a, b) ((a)-(b)) - #define __Pyx_c_prod_double(a, b) ((a)*(b)) - #define __Pyx_c_quot_double(a, b) ((a)/(b)) - #define __Pyx_c_neg_double(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_double(z) ((z)==(double)0) - #define __Pyx_c_conj_double(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (::std::abs(z)) - #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_double(z) ((z)==0) - #define __Pyx_c_conj_double(z) (conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (cabs(z)) - #define __Pyx_c_pow_double(a, b) (cpow(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); - #endif -#endif - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - - -/* Module declarations from 'cython' */ - -/* Module declarations from 'cpython.buffer' */ - -/* Module declarations from 'libc.string' */ - -/* Module declarations from 'libc.stdio' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.type' */ -static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; - -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - -/* Module declarations from 'cpython.mem' */ - -/* Module declarations from 'numpy' */ - -/* Module declarations from 'numpy' */ -static PyTypeObject *__pyx_ptype_5numpy_dtype = 0; -static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0; -static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0; -static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0; -static PyTypeObject *__pyx_ptype_5numpy_generic = 0; -static PyTypeObject *__pyx_ptype_5numpy_number = 0; -static PyTypeObject *__pyx_ptype_5numpy_integer = 0; -static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0; -static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0; -static PyTypeObject *__pyx_ptype_5numpy_inexact = 0; -static PyTypeObject *__pyx_ptype_5numpy_floating = 0; -static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0; -static PyTypeObject *__pyx_ptype_5numpy_flexible = 0; -static PyTypeObject *__pyx_ptype_5numpy_character = 0; -static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; - -/* Module declarations from 'libc.math' */ - -/* Module declarations from 'lee_Filter_c' */ -static double __pyx_v_12lee_Filter_c_COEF_VAR_DEFAULT; -static double __pyx_v_12lee_Filter_c_CU_DEFAULT; -static int __pyx_f_12lee_Filter_c_ceil_usr(double); /*proto*/ -static double __pyx_f_12lee_Filter_c_weighting(PyArrayObject *, double); /*proto*/ -static PyArrayObject *__pyx_f_12lee_Filter_c_lee_filter_array(PyArrayObject *, PyArrayObject *, int, int __pyx_skip_dispatch); /*proto*/ -static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 }; -#define __Pyx_MODULE_NAME "lee_Filter_c" -extern int __pyx_module_is_main_lee_Filter_c; -int __pyx_module_is_main_lee_Filter_c = 0; - -/* Implementation of 'lee_Filter_c' */ -static PyObject *__pyx_builtin_round; -static PyObject *__pyx_builtin_ImportError; -static const char __pyx_k_np[] = "np"; -static const char __pyx_k_os[] = "os"; -static const char __pyx_k_img[] = "img"; -static const char __pyx_k_std[] = "std"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_mean[] = "mean"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_numpy[] = "numpy"; -static const char __pyx_k_round[] = "round"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_out_arry[] = "out_arry"; -static const char __pyx_k_win_size[] = "win_size"; -static const char __pyx_k_ImportError[] = "ImportError"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_Project___init___py_File_lee_fi[] = "\n@Project:__init__.py\n@File:lee_filter.py\n@Function:lee_filter\n@Contact: https://github.com/PyRadar/pyradar\n@Author:SHJ\n@Date:2021/8/30 8:42\n@Version:1.0.0\n"; -static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; -static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; -static PyObject *__pyx_n_s_ImportError; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_img; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_mean; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_np; -static PyObject *__pyx_n_s_numpy; -static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to; -static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor; -static PyObject *__pyx_n_s_os; -static PyObject *__pyx_n_s_out_arry; -static PyObject *__pyx_n_s_round; -static PyObject *__pyx_n_s_std; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_win_size; -static PyObject *__pyx_pf_12lee_Filter_c_lee_filter_array(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_img, PyArrayObject *__pyx_v_out_arry, int __pyx_v_win_size); /* proto */ -static PyObject *__pyx_float_100000_0; -static PyObject *__pyx_int_0; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -/* Late includes */ - -/* "lee_Filter_c.pyx":40 - * - * - * cdef int ceil_usr(double v): # <<<<<<<<<<<<<< - * return int(math_ceil(v)) - * - */ - -static int __pyx_f_12lee_Filter_c_ceil_usr(double __pyx_v_v) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("ceil_usr", 0); - - /* "lee_Filter_c.pyx":41 - * - * cdef int ceil_usr(double v): - * return int(math_ceil(v)) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((int)ceil(__pyx_v_v)); - goto __pyx_L0; - - /* "lee_Filter_c.pyx":40 - * - * - * cdef int ceil_usr(double v): # <<<<<<<<<<<<<< - * return int(math_ceil(v)) - * - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "lee_Filter_c.pyx":45 - * - * - * cdef double weighting(np.ndarray[double,ndim=2] window,double cu): # <<<<<<<<<<<<<< - * """ - * Computes the weighthing function for Lee filter using cu as the noise - */ - -static double __pyx_f_12lee_Filter_c_weighting(PyArrayObject *__pyx_v_window, double __pyx_v_cu) { - double __pyx_v_two_cu; - double __pyx_v_window_mean; - double __pyx_v_window_std; - double __pyx_v_ci; - double __pyx_v_two_ci; - double __pyx_v_w_t; - __Pyx_LocalBuf_ND __pyx_pybuffernd_window; - __Pyx_Buffer __pyx_pybuffer_window; - double __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - double __pyx_t_4; - int __pyx_t_5; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("weighting", 0); - __pyx_pybuffer_window.pybuffer.buf = NULL; - __pyx_pybuffer_window.refcount = 0; - __pyx_pybuffernd_window.data = NULL; - __pyx_pybuffernd_window.rcbuffer = &__pyx_pybuffer_window; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_window.rcbuffer->pybuffer, (PyObject*)__pyx_v_window, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 45, __pyx_L1_error) - } - __pyx_pybuffernd_window.diminfo[0].strides = __pyx_pybuffernd_window.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_window.diminfo[0].shape = __pyx_pybuffernd_window.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_window.diminfo[1].strides = __pyx_pybuffernd_window.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_window.diminfo[1].shape = __pyx_pybuffernd_window.rcbuffer->pybuffer.shape[1]; - - /* "lee_Filter_c.pyx":51 - * """ - * # cu is the noise variation coefficient - * cdef double two_cu = cu * cu # <<<<<<<<<<<<<< - * - * # ci is the variation coefficient in the window - */ - __pyx_v_two_cu = (__pyx_v_cu * __pyx_v_cu); - - /* "lee_Filter_c.pyx":54 - * - * # ci is the variation coefficient in the window - * cdef double window_mean = window.mean() # <<<<<<<<<<<<<< - * cdef double window_std = window.std() - * cdef double ci = window_std / window_mean - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_window), __pyx_n_s_mean); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_window_mean = __pyx_t_4; - - /* "lee_Filter_c.pyx":55 - * # ci is the variation coefficient in the window - * cdef double window_mean = window.mean() - * cdef double window_std = window.std() # <<<<<<<<<<<<<< - * cdef double ci = window_std / window_mean - * - */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_window), __pyx_n_s_std); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_window_std = __pyx_t_4; - - /* "lee_Filter_c.pyx":56 - * cdef double window_mean = window.mean() - * cdef double window_std = window.std() - * cdef double ci = window_std / window_mean # <<<<<<<<<<<<<< - * - * cdef double two_ci = ci * ci - */ - if (unlikely(__pyx_v_window_mean == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 56, __pyx_L1_error) - } - __pyx_v_ci = (__pyx_v_window_std / __pyx_v_window_mean); - - /* "lee_Filter_c.pyx":58 - * cdef double ci = window_std / window_mean - * - * cdef double two_ci = ci * ci # <<<<<<<<<<<<<< - * cdef double w_t=0; - * if not (two_ci==0): # dirty patch to avoid zero division - */ - __pyx_v_two_ci = (__pyx_v_ci * __pyx_v_ci); - - /* "lee_Filter_c.pyx":59 - * - * cdef double two_ci = ci * ci - * cdef double w_t=0; # <<<<<<<<<<<<<< - * if not (two_ci==0): # dirty patch to avoid zero division - * two_ci = COEF_VAR_DEFAULT - */ - __pyx_v_w_t = 0.0; - - /* "lee_Filter_c.pyx":60 - * cdef double two_ci = ci * ci - * cdef double w_t=0; - * if not (two_ci==0): # dirty patch to avoid zero division # <<<<<<<<<<<<<< - * two_ci = COEF_VAR_DEFAULT - * - */ - __pyx_t_5 = ((!((__pyx_v_two_ci == 0.0) != 0)) != 0); - if (__pyx_t_5) { - - /* "lee_Filter_c.pyx":61 - * cdef double w_t=0; - * if not (two_ci==0): # dirty patch to avoid zero division - * two_ci = COEF_VAR_DEFAULT # <<<<<<<<<<<<<< - * - * if cu > ci: - */ - __pyx_v_two_ci = __pyx_v_12lee_Filter_c_COEF_VAR_DEFAULT; - - /* "lee_Filter_c.pyx":60 - * cdef double two_ci = ci * ci - * cdef double w_t=0; - * if not (two_ci==0): # dirty patch to avoid zero division # <<<<<<<<<<<<<< - * two_ci = COEF_VAR_DEFAULT - * - */ - } - - /* "lee_Filter_c.pyx":63 - * two_ci = COEF_VAR_DEFAULT - * - * if cu > ci: # <<<<<<<<<<<<<< - * w_t = 0.0 - * else: - */ - __pyx_t_5 = ((__pyx_v_cu > __pyx_v_ci) != 0); - if (__pyx_t_5) { - - /* "lee_Filter_c.pyx":64 - * - * if cu > ci: - * w_t = 0.0 # <<<<<<<<<<<<<< - * else: - * w_t = 1.0 - (two_cu / two_ci) - */ - __pyx_v_w_t = 0.0; - - /* "lee_Filter_c.pyx":63 - * two_ci = COEF_VAR_DEFAULT - * - * if cu > ci: # <<<<<<<<<<<<<< - * w_t = 0.0 - * else: - */ - goto __pyx_L4; - } - - /* "lee_Filter_c.pyx":66 - * w_t = 0.0 - * else: - * w_t = 1.0 - (two_cu / two_ci) # <<<<<<<<<<<<<< - * - * return w_t - */ - /*else*/ { - if (unlikely(__pyx_v_two_ci == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 66, __pyx_L1_error) - } - __pyx_v_w_t = (1.0 - (__pyx_v_two_cu / __pyx_v_two_ci)); - } - __pyx_L4:; - - /* "lee_Filter_c.pyx":68 - * w_t = 1.0 - (two_cu / two_ci) - * - * return w_t # <<<<<<<<<<<<<< - * - * cpdef np.ndarray[double,ndim=2] lee_filter_array(np.ndarray[double,ndim=2] img,np.ndarray[double,ndim=2] out_arry,int win_size): - */ - __pyx_r = __pyx_v_w_t; - goto __pyx_L0; - - /* "lee_Filter_c.pyx":45 - * - * - * cdef double weighting(np.ndarray[double,ndim=2] window,double cu): # <<<<<<<<<<<<<< - * """ - * Computes the weighthing function for Lee filter using cu as the noise - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_window.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_WriteUnraisable("lee_Filter_c.weighting", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_window.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "lee_Filter_c.pyx":70 - * return w_t - * - * cpdef np.ndarray[double,ndim=2] lee_filter_array(np.ndarray[double,ndim=2] img,np.ndarray[double,ndim=2] out_arry,int win_size): # <<<<<<<<<<<<<< - * """ - * Apply lee to a numpy matrix containing the image, with a window of - */ - -static PyObject *__pyx_pw_12lee_Filter_c_1lee_filter_array(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyArrayObject *__pyx_f_12lee_Filter_c_lee_filter_array(PyArrayObject *__pyx_v_img, PyArrayObject *__pyx_v_out_arry, int __pyx_v_win_size, CYTHON_UNUSED int __pyx_skip_dispatch) { - double __pyx_v_cu; - int __pyx_v_i; - int __pyx_v_j; - int __pyx_v_xleft; - int __pyx_v_xright; - int __pyx_v_yup; - int __pyx_v_ydown; - PyArrayObject *__pyx_v_window = 0; - double __pyx_v_w_t; - double __pyx_v_window_mean; - CYTHON_UNUSED double __pyx_v_new_pix_valu; - int __pyx_v_n; - int __pyx_v_m; - int __pyx_v_win_offset; - PyObject *__pyx_v_pix_value = NULL; - PyObject *__pyx_v_new_pix_value = NULL; - __Pyx_LocalBuf_ND __pyx_pybuffernd_img; - __Pyx_Buffer __pyx_pybuffer_img; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out_arry; - __Pyx_Buffer __pyx_pybuffer_out_arry; - __Pyx_LocalBuf_ND __pyx_pybuffernd_window; - __Pyx_Buffer __pyx_pybuffer_window; - PyArrayObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - int __pyx_t_2; - Py_ssize_t __pyx_t_3; - Py_ssize_t __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - PyArrayObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - double __pyx_t_13; - int __pyx_t_14; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("lee_filter_array", 0); - __pyx_pybuffer_window.pybuffer.buf = NULL; - __pyx_pybuffer_window.refcount = 0; - __pyx_pybuffernd_window.data = NULL; - __pyx_pybuffernd_window.rcbuffer = &__pyx_pybuffer_window; - __pyx_pybuffer_img.pybuffer.buf = NULL; - __pyx_pybuffer_img.refcount = 0; - __pyx_pybuffernd_img.data = NULL; - __pyx_pybuffernd_img.rcbuffer = &__pyx_pybuffer_img; - __pyx_pybuffer_out_arry.pybuffer.buf = NULL; - __pyx_pybuffer_out_arry.refcount = 0; - __pyx_pybuffernd_out_arry.data = NULL; - __pyx_pybuffernd_out_arry.rcbuffer = &__pyx_pybuffer_out_arry; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_img.rcbuffer->pybuffer, (PyObject*)__pyx_v_img, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 70, __pyx_L1_error) - } - __pyx_pybuffernd_img.diminfo[0].strides = __pyx_pybuffernd_img.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_img.diminfo[0].shape = __pyx_pybuffernd_img.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_img.diminfo[1].strides = __pyx_pybuffernd_img.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_img.diminfo[1].shape = __pyx_pybuffernd_img.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_arry.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_arry, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 70, __pyx_L1_error) - } - __pyx_pybuffernd_out_arry.diminfo[0].strides = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_arry.diminfo[0].shape = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out_arry.diminfo[1].strides = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out_arry.diminfo[1].shape = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.shape[1]; - - /* "lee_Filter_c.pyx":77 - * # we process the entire img as float64 to avoid type overflow error - * #n, m = img.shape - * cdef double cu = CU_DEFAULT # <<<<<<<<<<<<<< - * cdef int i=0 - * cdef int j=0 - */ - __pyx_v_cu = __pyx_v_12lee_Filter_c_CU_DEFAULT; - - /* "lee_Filter_c.pyx":78 - * #n, m = img.shape - * cdef double cu = CU_DEFAULT - * cdef int i=0 # <<<<<<<<<<<<<< - * cdef int j=0 - * cdef int xleft=0 - */ - __pyx_v_i = 0; - - /* "lee_Filter_c.pyx":79 - * cdef double cu = CU_DEFAULT - * cdef int i=0 - * cdef int j=0 # <<<<<<<<<<<<<< - * cdef int xleft=0 - * cdef int xright=0 - */ - __pyx_v_j = 0; - - /* "lee_Filter_c.pyx":80 - * cdef int i=0 - * cdef int j=0 - * cdef int xleft=0 # <<<<<<<<<<<<<< - * cdef int xright=0 - * cdef int yup=0 - */ - __pyx_v_xleft = 0; - - /* "lee_Filter_c.pyx":81 - * cdef int j=0 - * cdef int xleft=0 - * cdef int xright=0 # <<<<<<<<<<<<<< - * cdef int yup=0 - * cdef int ydown=0 - */ - __pyx_v_xright = 0; - - /* "lee_Filter_c.pyx":82 - * cdef int xleft=0 - * cdef int xright=0 - * cdef int yup=0 # <<<<<<<<<<<<<< - * cdef int ydown=0 - * cdef np.ndarray[double,ndim=2] window; - */ - __pyx_v_yup = 0; - - /* "lee_Filter_c.pyx":83 - * cdef int xright=0 - * cdef int yup=0 - * cdef int ydown=0 # <<<<<<<<<<<<<< - * cdef np.ndarray[double,ndim=2] window; - * cdef double w_t=0; - */ - __pyx_v_ydown = 0; - - /* "lee_Filter_c.pyx":85 - * cdef int ydown=0 - * cdef np.ndarray[double,ndim=2] window; - * cdef double w_t=0; # <<<<<<<<<<<<<< - * cdef double window_mean=0; - * cdef double new_pix_valu=0; - */ - __pyx_v_w_t = 0.0; - - /* "lee_Filter_c.pyx":86 - * cdef np.ndarray[double,ndim=2] window; - * cdef double w_t=0; - * cdef double window_mean=0; # <<<<<<<<<<<<<< - * cdef double new_pix_valu=0; - * cdef int n = img.shape[0] - */ - __pyx_v_window_mean = 0.0; - - /* "lee_Filter_c.pyx":87 - * cdef double w_t=0; - * cdef double window_mean=0; - * cdef double new_pix_valu=0; # <<<<<<<<<<<<<< - * cdef int n = img.shape[0] - * cdef int m=img.shape[1] - */ - __pyx_v_new_pix_valu = 0.0; - - /* "lee_Filter_c.pyx":88 - * cdef double window_mean=0; - * cdef double new_pix_valu=0; - * cdef int n = img.shape[0] # <<<<<<<<<<<<<< - * cdef int m=img.shape[1] - * cdef int win_offset=int(win_size/2) - */ - __pyx_v_n = (__pyx_v_img->dimensions[0]); - - /* "lee_Filter_c.pyx":89 - * cdef double new_pix_valu=0; - * cdef int n = img.shape[0] - * cdef int m=img.shape[1] # <<<<<<<<<<<<<< - * cdef int win_offset=int(win_size/2) - * - */ - __pyx_v_m = (__pyx_v_img->dimensions[1]); - - /* "lee_Filter_c.pyx":90 - * cdef int n = img.shape[0] - * cdef int m=img.shape[1] - * cdef int win_offset=int(win_size/2) # <<<<<<<<<<<<<< - * - * while i= n: - */ - __pyx_t_1 = ((__pyx_v_xleft < 0) != 0); - if (__pyx_t_1) { - - /* "lee_Filter_c.pyx":96 - * xright=int(i+win_offset) - * if xleft < 0: - * xleft = 0 # <<<<<<<<<<<<<< - * if xright >= n: - * xright = n - */ - __pyx_v_xleft = 0; - - /* "lee_Filter_c.pyx":95 - * xleft=ceil_usr(i-win_offset) - * xright=int(i+win_offset) - * if xleft < 0: # <<<<<<<<<<<<<< - * xleft = 0 - * if xright >= n: - */ - } - - /* "lee_Filter_c.pyx":97 - * if xleft < 0: - * xleft = 0 - * if xright >= n: # <<<<<<<<<<<<<< - * xright = n - * j=0 - */ - __pyx_t_1 = ((__pyx_v_xright >= __pyx_v_n) != 0); - if (__pyx_t_1) { - - /* "lee_Filter_c.pyx":98 - * xleft = 0 - * if xright >= n: - * xright = n # <<<<<<<<<<<<<< - * j=0 - * while j= n: # <<<<<<<<<<<<<< - * xright = n - * j=0 - */ - } - - /* "lee_Filter_c.pyx":99 - * if xright >= n: - * xright = n - * j=0 # <<<<<<<<<<<<<< - * while j= m: - */ - __pyx_t_1 = ((__pyx_v_yup < 0) != 0); - if (__pyx_t_1) { - - /* "lee_Filter_c.pyx":105 - * ydown = int(j + win_offset) - * if yup < 0: - * yup = 0 # <<<<<<<<<<<<<< - * if ydown >= m: - * ydown = m - */ - __pyx_v_yup = 0; - - /* "lee_Filter_c.pyx":104 - * yup=0 if yup<0 else yup - * ydown = int(j + win_offset) - * if yup < 0: # <<<<<<<<<<<<<< - * yup = 0 - * if ydown >= m: - */ - } - - /* "lee_Filter_c.pyx":106 - * if yup < 0: - * yup = 0 - * if ydown >= m: # <<<<<<<<<<<<<< - * ydown = m - * - */ - __pyx_t_1 = ((__pyx_v_ydown >= __pyx_v_m) != 0); - if (__pyx_t_1) { - - /* "lee_Filter_c.pyx":107 - * yup = 0 - * if ydown >= m: - * ydown = m # <<<<<<<<<<<<<< - * - * pix_value = img[i, j] - */ - __pyx_v_ydown = __pyx_v_m; - - /* "lee_Filter_c.pyx":106 - * if yup < 0: - * yup = 0 - * if ydown >= m: # <<<<<<<<<<<<<< - * ydown = m - * - */ - } - - /* "lee_Filter_c.pyx":109 - * ydown = m - * - * pix_value = img[i, j] # <<<<<<<<<<<<<< - * - * window = img[xleft:xright+1, yup:ydown+1] - */ - __pyx_t_3 = __pyx_v_i; - __pyx_t_4 = __pyx_v_j; - __pyx_t_2 = -1; - if (__pyx_t_3 < 0) { - __pyx_t_3 += __pyx_pybuffernd_img.diminfo[0].shape; - if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 0; - } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_img.diminfo[0].shape)) __pyx_t_2 = 0; - if (__pyx_t_4 < 0) { - __pyx_t_4 += __pyx_pybuffernd_img.diminfo[1].shape; - if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 1; - } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_img.diminfo[1].shape)) __pyx_t_2 = 1; - if (unlikely(__pyx_t_2 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_2); - __PYX_ERR(0, 109, __pyx_L1_error) - } - __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_img.rcbuffer->pybuffer.buf, __pyx_t_3, __pyx_pybuffernd_img.diminfo[0].strides, __pyx_t_4, __pyx_pybuffernd_img.diminfo[1].strides))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 109, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_XDECREF_SET(__pyx_v_pix_value, __pyx_t_5); - __pyx_t_5 = 0; - - /* "lee_Filter_c.pyx":111 - * pix_value = img[i, j] - * - * window = img[xleft:xright+1, yup:ydown+1] # <<<<<<<<<<<<<< - * - * w_t = weighting(window, cu) - */ - __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_xleft); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_xright + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_7 = PySlice_New(__pyx_t_5, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_yup); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __Pyx_PyInt_From_long((__pyx_v_ydown + 1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = PySlice_New(__pyx_t_6, __pyx_t_5, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_7); - PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); - __Pyx_GIVEREF(__pyx_t_8); - PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_8); - __pyx_t_7 = 0; - __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_img), __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 111, __pyx_L1_error) - __pyx_t_9 = ((PyArrayObject *)__pyx_t_8); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_window.rcbuffer->pybuffer); - __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_window.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); - if (unlikely(__pyx_t_2 < 0)) { - PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_window.rcbuffer->pybuffer, (PyObject*)__pyx_v_window, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); - } - __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0; - } - __pyx_pybuffernd_window.diminfo[0].strides = __pyx_pybuffernd_window.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_window.diminfo[0].shape = __pyx_pybuffernd_window.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_window.diminfo[1].strides = __pyx_pybuffernd_window.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_window.diminfo[1].shape = __pyx_pybuffernd_window.rcbuffer->pybuffer.shape[1]; - if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 111, __pyx_L1_error) - } - __pyx_t_9 = 0; - __Pyx_XDECREF_SET(__pyx_v_window, ((PyArrayObject *)__pyx_t_8)); - __pyx_t_8 = 0; - - /* "lee_Filter_c.pyx":113 - * window = img[xleft:xright+1, yup:ydown+1] - * - * w_t = weighting(window, cu) # <<<<<<<<<<<<<< - * - * window_mean = np.mean(window) - */ - __pyx_v_w_t = __pyx_f_12lee_Filter_c_weighting(((PyArrayObject *)__pyx_v_window), __pyx_v_cu); - - /* "lee_Filter_c.pyx":115 - * w_t = weighting(window, cu) - * - * window_mean = np.mean(window) # <<<<<<<<<<<<<< - * new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_mean); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { - __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); - if (likely(__pyx_t_5)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); - __Pyx_INCREF(__pyx_t_5); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_7, function); - } - } - __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, ((PyObject *)__pyx_v_window)) : __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_v_window)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_window_mean = __pyx_t_13; - - /* "lee_Filter_c.pyx":116 - * - * window_mean = np.mean(window) - * new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) # <<<<<<<<<<<<<< - * - * if not new_pix_value > 0: - */ - __pyx_t_8 = PyFloat_FromDouble(__pyx_v_w_t); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_7 = PyNumber_Multiply(__pyx_v_pix_value, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyFloat_FromDouble((__pyx_v_window_mean * (1.0 - __pyx_v_w_t))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_5 = PyNumber_Add(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_XDECREF_SET(__pyx_v_new_pix_value, __pyx_t_5); - __pyx_t_5 = 0; - - /* "lee_Filter_c.pyx":118 - * new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) - * - * if not new_pix_value > 0: # <<<<<<<<<<<<<< - * new_pix_value = 0 - * out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 - */ - __pyx_t_5 = PyObject_RichCompare(__pyx_v_new_pix_value, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 118, __pyx_L1_error) - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 118, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_14 = ((!__pyx_t_1) != 0); - if (__pyx_t_14) { - - /* "lee_Filter_c.pyx":119 - * - * if not new_pix_value > 0: - * new_pix_value = 0 # <<<<<<<<<<<<<< - * out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 - * j=j+1 - */ - __Pyx_INCREF(__pyx_int_0); - __Pyx_DECREF_SET(__pyx_v_new_pix_value, __pyx_int_0); - - /* "lee_Filter_c.pyx":118 - * new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) - * - * if not new_pix_value > 0: # <<<<<<<<<<<<<< - * new_pix_value = 0 - * out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 - */ - } - - /* "lee_Filter_c.pyx":120 - * if not new_pix_value > 0: - * new_pix_value = 0 - * out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 # <<<<<<<<<<<<<< - * j=j+1 - * i=i+1 - */ - __pyx_t_5 = PyNumber_Multiply(__pyx_v_new_pix_value, __pyx_float_100000_0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_round, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyFloat_DivideObjC(__pyx_t_8, __pyx_float_100000_0, 100000.0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_4 = __pyx_v_i; - __pyx_t_3 = __pyx_v_j; - __pyx_t_2 = -1; - if (__pyx_t_4 < 0) { - __pyx_t_4 += __pyx_pybuffernd_out_arry.diminfo[0].shape; - if (unlikely(__pyx_t_4 < 0)) __pyx_t_2 = 0; - } else if (unlikely(__pyx_t_4 >= __pyx_pybuffernd_out_arry.diminfo[0].shape)) __pyx_t_2 = 0; - if (__pyx_t_3 < 0) { - __pyx_t_3 += __pyx_pybuffernd_out_arry.diminfo[1].shape; - if (unlikely(__pyx_t_3 < 0)) __pyx_t_2 = 1; - } else if (unlikely(__pyx_t_3 >= __pyx_pybuffernd_out_arry.diminfo[1].shape)) __pyx_t_2 = 1; - if (unlikely(__pyx_t_2 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_2); - __PYX_ERR(0, 120, __pyx_L1_error) - } - *__Pyx_BufPtrStrided2d(double *, __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.buf, __pyx_t_4, __pyx_pybuffernd_out_arry.diminfo[0].strides, __pyx_t_3, __pyx_pybuffernd_out_arry.diminfo[1].strides) = __pyx_t_13; - - /* "lee_Filter_c.pyx":121 - * new_pix_value = 0 - * out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 - * j=j+1 # <<<<<<<<<<<<<< - * i=i+1 - * return out_arry - */ - __pyx_v_j = (__pyx_v_j + 1); - } - - /* "lee_Filter_c.pyx":122 - * out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 - * j=j+1 - * i=i+1 # <<<<<<<<<<<<<< - * return out_arry - * - */ - __pyx_v_i = (__pyx_v_i + 1); - } - - /* "lee_Filter_c.pyx":123 - * j=j+1 - * i=i+1 - * return out_arry # <<<<<<<<<<<<<< - * - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_out_arry)); - __pyx_r = ((PyArrayObject *)__pyx_v_out_arry); - goto __pyx_L0; - - /* "lee_Filter_c.pyx":70 - * return w_t - * - * cpdef np.ndarray[double,ndim=2] lee_filter_array(np.ndarray[double,ndim=2] img,np.ndarray[double,ndim=2] out_arry,int win_size): # <<<<<<<<<<<<<< - * """ - * Apply lee to a numpy matrix containing the image, with a window of - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_img.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_arry.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_window.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("lee_Filter_c.lee_filter_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_img.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_arry.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_window.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_window); - __Pyx_XDECREF(__pyx_v_pix_value); - __Pyx_XDECREF(__pyx_v_new_pix_value); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_12lee_Filter_c_1lee_filter_array(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_12lee_Filter_c_lee_filter_array[] = "\n Apply lee to a numpy matrix containing the image, with a window of\n win_size x win_size.\n "; -static PyObject *__pyx_pw_12lee_Filter_c_1lee_filter_array(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - PyArrayObject *__pyx_v_img = 0; - PyArrayObject *__pyx_v_out_arry = 0; - int __pyx_v_win_size; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lee_filter_array (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_img,&__pyx_n_s_out_arry,&__pyx_n_s_win_size,0}; - PyObject* values[3] = {0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_img)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_out_arry)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("lee_filter_array", 1, 3, 3, 1); __PYX_ERR(0, 70, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_win_size)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("lee_filter_array", 1, 3, 3, 2); __PYX_ERR(0, 70, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lee_filter_array") < 0)) __PYX_ERR(0, 70, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - } - __pyx_v_img = ((PyArrayObject *)values[0]); - __pyx_v_out_arry = ((PyArrayObject *)values[1]); - __pyx_v_win_size = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_win_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("lee_filter_array", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 70, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("lee_Filter_c.lee_filter_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_img), __pyx_ptype_5numpy_ndarray, 1, "img", 0))) __PYX_ERR(0, 70, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_out_arry), __pyx_ptype_5numpy_ndarray, 1, "out_arry", 0))) __PYX_ERR(0, 70, __pyx_L1_error) - __pyx_r = __pyx_pf_12lee_Filter_c_lee_filter_array(__pyx_self, __pyx_v_img, __pyx_v_out_arry, __pyx_v_win_size); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_12lee_Filter_c_lee_filter_array(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_img, PyArrayObject *__pyx_v_out_arry, int __pyx_v_win_size) { - __Pyx_LocalBuf_ND __pyx_pybuffernd_img; - __Pyx_Buffer __pyx_pybuffer_img; - __Pyx_LocalBuf_ND __pyx_pybuffernd_out_arry; - __Pyx_Buffer __pyx_pybuffer_out_arry; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("lee_filter_array", 0); - __pyx_pybuffer_img.pybuffer.buf = NULL; - __pyx_pybuffer_img.refcount = 0; - __pyx_pybuffernd_img.data = NULL; - __pyx_pybuffernd_img.rcbuffer = &__pyx_pybuffer_img; - __pyx_pybuffer_out_arry.pybuffer.buf = NULL; - __pyx_pybuffer_out_arry.refcount = 0; - __pyx_pybuffernd_out_arry.data = NULL; - __pyx_pybuffernd_out_arry.rcbuffer = &__pyx_pybuffer_out_arry; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_img.rcbuffer->pybuffer, (PyObject*)__pyx_v_img, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 70, __pyx_L1_error) - } - __pyx_pybuffernd_img.diminfo[0].strides = __pyx_pybuffernd_img.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_img.diminfo[0].shape = __pyx_pybuffernd_img.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_img.diminfo[1].strides = __pyx_pybuffernd_img.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_img.diminfo[1].shape = __pyx_pybuffernd_img.rcbuffer->pybuffer.shape[1]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_arry.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_arry, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) __PYX_ERR(0, 70, __pyx_L1_error) - } - __pyx_pybuffernd_out_arry.diminfo[0].strides = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_arry.diminfo[0].shape = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_out_arry.diminfo[1].strides = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_out_arry.diminfo[1].shape = __pyx_pybuffernd_out_arry.rcbuffer->pybuffer.shape[1]; - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_12lee_Filter_c_lee_filter_array(__pyx_v_img, __pyx_v_out_arry, __pyx_v_win_size, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_img.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_arry.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("lee_Filter_c.lee_filter_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_img.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_arry.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":735 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":736 - * - * cdef inline object PyArray_MultiIterNew1(a): - * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew2(a, b): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 736, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":735 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":738 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":739 - * - * cdef inline object PyArray_MultiIterNew2(a, b): - * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":738 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":741 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":742 - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 742, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":741 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":744 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":745 - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":744 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":747 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":748 - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":747 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":750 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":751 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); - if (__pyx_t_1) { - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":752 - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape # <<<<<<<<<<<<<< - * else: - * return () - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); - __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":751 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - } - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":754 - * return d.subarray.shape - * else: - * return () # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_empty_tuple); - __pyx_r = __pyx_empty_tuple; - goto __pyx_L0; - } - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":750 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":931 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - -static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_array_base", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":932 - * - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< - * PyArray_SetBaseObject(arr, base) - * - */ - Py_INCREF(__pyx_v_base); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":933 - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< - * - * cdef inline object get_array_base(ndarray arr): - */ - (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":931 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":935 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { - PyObject *__pyx_v_base; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("get_array_base", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":936 - * - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< - * if base is NULL: - * return None - */ - __pyx_v_base = PyArray_BASE(__pyx_v_arr); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":937 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - __pyx_t_1 = ((__pyx_v_base == NULL) != 0); - if (__pyx_t_1) { - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":938 - * base = PyArray_BASE(arr) - * if base is NULL: - * return None # <<<<<<<<<<<<<< - * return base - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":937 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - } - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":939 - * if base is NULL: - * return None - * return base # <<<<<<<<<<<<<< - * - * # Versions of the import_* functions which are more suitable for - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_base)); - __pyx_r = ((PyObject *)__pyx_v_base); - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":935 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":943 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_array", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":945 - * cdef inline int import_array() except -1: - * try: - * __pyx_import_array() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") - */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 945, __pyx_L3_error) - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":946 - * try: - * __pyx_import_array() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.multiarray failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 946, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":947 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 947, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 947, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":943 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":949 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_umath", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":951 - * cdef inline int import_umath() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 951, __pyx_L3_error) - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":952 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 952, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":953 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 953, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 953, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":949 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":955 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_ufunc", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":957 - * cdef inline int import_ufunc() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 957, __pyx_L3_error) - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":958 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 958, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":959 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef extern from *: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 959, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 959, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":955 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":969 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_timedelta64_object", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":981 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":969 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":984 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_datetime64_object", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":996 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":984 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":999 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - -static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { - npy_datetime __pyx_r; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1006 - * also needed. That can be found using `get_datetime64_unit`. - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":999 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1009 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - -static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { - npy_timedelta __pyx_r; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1013 - * returns the int64 value underlying scalar numpy timedelta64 object - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1009 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - -static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { - NPY_DATETIMEUNIT __pyx_r; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1020 - * returns the unit part of the dtype for a numpy datetime64 object. - * """ - * return (obj).obmeta.base # <<<<<<<<<<<<<< - */ - __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); - goto __pyx_L0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -static PyMethodDef __pyx_methods[] = { - {"lee_filter_array", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_12lee_Filter_c_1lee_filter_array, METH_VARARGS|METH_KEYWORDS, __pyx_doc_12lee_Filter_c_lee_filter_array}, - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_lee_Filter_c(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_lee_Filter_c}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "lee_Filter_c", - __pyx_k_Project___init___py_File_lee_fi, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_img, __pyx_k_img, sizeof(__pyx_k_img), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, - {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, - {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0}, - {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0}, - {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, - {&__pyx_n_s_out_arry, __pyx_k_out_arry, sizeof(__pyx_k_out_arry), 0, 0, 1, 1}, - {&__pyx_n_s_round, __pyx_k_round, sizeof(__pyx_k_round), 0, 0, 1, 1}, - {&__pyx_n_s_std, __pyx_k_std, sizeof(__pyx_k_std), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_win_size, __pyx_k_win_size, sizeof(__pyx_k_win_size), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_round = __Pyx_GetBuiltinName(__pyx_n_s_round); if (!__pyx_builtin_round) __PYX_ERR(0, 120, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 947, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":947 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple_)) __PYX_ERR(1, 947, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":953 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 953, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_float_100000_0 = PyFloat_FromDouble(100000.0); if (unlikely(!__pyx_float_100000_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 200, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 223, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 227, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 239, __pyx_L1_error) - __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_generic) __PYX_ERR(1, 771, __pyx_L1_error) - __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_number) __PYX_ERR(1, 773, __pyx_L1_error) - __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_integer) __PYX_ERR(1, 775, __pyx_L1_error) - __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 777, __pyx_L1_error) - __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 779, __pyx_L1_error) - __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 781, __pyx_L1_error) - __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_floating) __PYX_ERR(1, 783, __pyx_L1_error) - __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 785, __pyx_L1_error) - __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 787, __pyx_L1_error) - __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_character) __PYX_ERR(1, 789, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#elif PY_MAJOR_VERSION < 3 -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" void -#else -#define __Pyx_PyMODINIT_FUNC void -#endif -#else -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyObject * -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initlee_Filter_c(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initlee_Filter_c(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_lee_Filter_c(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_lee_Filter_c(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { - #if PY_VERSION_HEX >= 0x030700A1 - static PY_INT64_T main_interpreter_id = -1; - PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); - if (main_interpreter_id == -1) { - main_interpreter_id = current_id; - return (unlikely(current_id == -1)) ? -1 : 0; - } else if (unlikely(main_interpreter_id != current_id)) - #else - static PyInterpreterState *main_interpreter = NULL; - PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; - if (!main_interpreter) { - main_interpreter = current_interpreter; - } else if (unlikely(main_interpreter != current_interpreter)) - #endif - { - PyErr_SetString( - PyExc_ImportError, - "Interpreter change detected - this module can only be loaded into one interpreter per process."); - return -1; - } - return 0; -} -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - if (allow_none || value != Py_None) { - result = PyDict_SetItemString(moddict, to_name, value); - } - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__Pyx_check_single_interpreter()) - return NULL; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static CYTHON_SMALL_CODE int __pyx_pymod_exec_lee_Filter_c(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m) { - if (__pyx_m == __pyx_pyinit_module) return 0; - PyErr_SetString(PyExc_RuntimeError, "Module 'lee_Filter_c' has already been imported. Re-initialisation is not supported."); - return -1; - } - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_lee_Filter_c(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pxy_PyFrame_Initialize_Offsets - __Pxy_PyFrame_Initialize_Offsets(); - #endif - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - PyEval_InitThreads(); - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("lee_Filter_c", __pyx_methods, __pyx_k_Project___init___py_File_lee_fi, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_b); - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_cython_runtime); - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_lee_Filter_c) { - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "lee_Filter_c")) { - if (unlikely(PyDict_SetItemString(modules, "lee_Filter_c", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - (void)__Pyx_modinit_type_init_code(); - if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "lee_Filter_c.pyx":12 - * """ - * - * import os # <<<<<<<<<<<<<< - * cimport cython # - * import numpy as np##cpythonnp - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 12, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "lee_Filter_c.pyx":14 - * import os - * cimport cython # - * import numpy as np##cpythonnp # <<<<<<<<<<<<<< - * cimport numpy as np # cpythonnp - * from libc.math cimport pi - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "lee_Filter_c.pyx":36 - * from libc.math cimport lround as math_round - * - * cdef double COEF_VAR_DEFAULT = 0.01 # <<<<<<<<<<<<<< - * cdef double CU_DEFAULT = 0.25 - * - */ - __pyx_v_12lee_Filter_c_COEF_VAR_DEFAULT = 0.01; - - /* "lee_Filter_c.pyx":37 - * - * cdef double COEF_VAR_DEFAULT = 0.01 - * cdef double CU_DEFAULT = 0.25 # <<<<<<<<<<<<<< - * - * - */ - __pyx_v_12lee_Filter_c_CU_DEFAULT = 0.25; - - /* "lee_Filter_c.pyx":1 - * # -*- coding: UTF-8 -*- # <<<<<<<<<<<<<< - * """ - * @Project:__init__.py - */ - __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "../../../../../../Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init lee_Filter_c", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - Py_CLEAR(__pyx_m); - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init lee_Filter_c"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule(modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, "RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* IsLittleEndian */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) -{ - union { - uint32_t u32; - uint8_t u8[4]; - } S; - S.u32 = 0x01020304; - return S.u8[0] == 4; -} - -/* BufferFormatCheck */ -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type) { - stack[0].field = &ctx->root; - stack[0].parent_offset = 0; - ctx->root.type = type; - ctx->root.name = "buffer dtype"; - ctx->root.offset = 0; - ctx->head = stack; - ctx->head->field = &ctx->root; - ctx->fmt_offset = 0; - ctx->head->parent_offset = 0; - ctx->new_packmode = '@'; - ctx->enc_packmode = '@'; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->is_complex = 0; - ctx->is_valid_array = 0; - ctx->struct_alignment = 0; - while (type->typegroup == 'S') { - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = 0; - type = type->fields->type; - } -} -static int __Pyx_BufFmt_ParseNumber(const char** ts) { - int count; - const char* t = *ts; - if (*t < '0' || *t > '9') { - return -1; - } else { - count = *t++ - '0'; - while (*t >= '0' && *t <= '9') { - count *= 10; - count += *t++ - '0'; - } - } - *ts = t; - return count; -} -static int __Pyx_BufFmt_ExpectNumber(const char **ts) { - int number = __Pyx_BufFmt_ParseNumber(ts); - if (number == -1) - PyErr_Format(PyExc_ValueError,\ - "Does not understand character buffer dtype format string ('%c')", **ts); - return number; -} -static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { - PyErr_Format(PyExc_ValueError, - "Unexpected format string character: '%c'", ch); -} -static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { - switch (ch) { - case '?': return "'bool'"; - case 'c': return "'char'"; - case 'b': return "'signed char'"; - case 'B': return "'unsigned char'"; - case 'h': return "'short'"; - case 'H': return "'unsigned short'"; - case 'i': return "'int'"; - case 'I': return "'unsigned int'"; - case 'l': return "'long'"; - case 'L': return "'unsigned long'"; - case 'q': return "'long long'"; - case 'Q': return "'unsigned long long'"; - case 'f': return (is_complex ? "'complex float'" : "'float'"); - case 'd': return (is_complex ? "'complex double'" : "'double'"); - case 'g': return (is_complex ? "'complex long double'" : "'long double'"); - case 'T': return "a struct"; - case 'O': return "Python object"; - case 'P': return "a pointer"; - case 's': case 'p': return "a string"; - case 0: return "end"; - default: return "unparseable format string"; - } -} -static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return 2; - case 'i': case 'I': case 'l': case 'L': return 4; - case 'q': case 'Q': return 8; - case 'f': return (is_complex ? 8 : 4); - case 'd': return (is_complex ? 16 : 8); - case 'g': { - PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); - return 0; - } - case 'O': case 'P': return sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(short); - case 'i': case 'I': return sizeof(int); - case 'l': case 'L': return sizeof(long); - #ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(PY_LONG_LONG); - #endif - case 'f': return sizeof(float) * (is_complex ? 2 : 1); - case 'd': return sizeof(double) * (is_complex ? 2 : 1); - case 'g': return sizeof(long double) * (is_complex ? 2 : 1); - case 'O': case 'P': return sizeof(void*); - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -typedef struct { char c; short x; } __Pyx_st_short; -typedef struct { char c; int x; } __Pyx_st_int; -typedef struct { char c; long x; } __Pyx_st_long; -typedef struct { char c; float x; } __Pyx_st_float; -typedef struct { char c; double x; } __Pyx_st_double; -typedef struct { char c; long double x; } __Pyx_st_longdouble; -typedef struct { char c; void *x; } __Pyx_st_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_st_float) - sizeof(float); - case 'd': return sizeof(__Pyx_st_double) - sizeof(double); - case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -/* These are for computing the padding at the end of the struct to align - on the first member of the struct. This will probably the same as above, - but we don't have any guarantees. - */ -typedef struct { short x; char c; } __Pyx_pad_short; -typedef struct { int x; char c; } __Pyx_pad_int; -typedef struct { long x; char c; } __Pyx_pad_long; -typedef struct { float x; char c; } __Pyx_pad_float; -typedef struct { double x; char c; } __Pyx_pad_double; -typedef struct { long double x; char c; } __Pyx_pad_longdouble; -typedef struct { void *x; char c; } __Pyx_pad_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); - case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); - case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { - switch (ch) { - case 'c': - return 'H'; - case 'b': case 'h': case 'i': - case 'l': case 'q': case 's': case 'p': - return 'I'; - case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': - return 'U'; - case 'f': case 'd': case 'g': - return (is_complex ? 'C' : 'R'); - case 'O': - return 'O'; - case 'P': - return 'P'; - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { - if (ctx->head == NULL || ctx->head->field == &ctx->root) { - const char* expected; - const char* quote; - if (ctx->head == NULL) { - expected = "end"; - quote = ""; - } else { - expected = ctx->head->field->type->name; - quote = "'"; - } - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected %s%s%s but got %s", - quote, expected, quote, - __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); - } else { - __Pyx_StructField* field = ctx->head->field; - __Pyx_StructField* parent = (ctx->head - 1)->field; - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", - field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), - parent->type->name, field->name); - } -} -static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { - char group; - size_t size, offset, arraysize = 1; - if (ctx->enc_type == 0) return 0; - if (ctx->head->field->type->arraysize[0]) { - int i, ndim = 0; - if (ctx->enc_type == 's' || ctx->enc_type == 'p') { - ctx->is_valid_array = ctx->head->field->type->ndim == 1; - ndim = 1; - if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { - PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %zu", - ctx->head->field->type->arraysize[0], ctx->enc_count); - return -1; - } - } - if (!ctx->is_valid_array) { - PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", - ctx->head->field->type->ndim, ndim); - return -1; - } - for (i = 0; i < ctx->head->field->type->ndim; i++) { - arraysize *= ctx->head->field->type->arraysize[i]; - } - ctx->is_valid_array = 0; - ctx->enc_count = 1; - } - group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); - do { - __Pyx_StructField* field = ctx->head->field; - __Pyx_TypeInfo* type = field->type; - if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { - size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); - } else { - size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); - } - if (ctx->enc_packmode == '@') { - size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); - size_t align_mod_offset; - if (align_at == 0) return -1; - align_mod_offset = ctx->fmt_offset % align_at; - if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; - if (ctx->struct_alignment == 0) - ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, - ctx->is_complex); - } - if (type->size != size || type->typegroup != group) { - if (type->typegroup == 'C' && type->fields != NULL) { - size_t parent_offset = ctx->head->parent_offset + field->offset; - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = parent_offset; - continue; - } - if ((type->typegroup == 'H' || group == 'H') && type->size == size) { - } else { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - } - offset = ctx->head->parent_offset + field->offset; - if (ctx->fmt_offset != offset) { - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", - (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); - return -1; - } - ctx->fmt_offset += size; - if (arraysize) - ctx->fmt_offset += (arraysize - 1) * size; - --ctx->enc_count; - while (1) { - if (field == &ctx->root) { - ctx->head = NULL; - if (ctx->enc_count != 0) { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - break; - } - ctx->head->field = ++field; - if (field->type == NULL) { - --ctx->head; - field = ctx->head->field; - continue; - } else if (field->type->typegroup == 'S') { - size_t parent_offset = ctx->head->parent_offset + field->offset; - if (field->type->fields->type == NULL) continue; - field = field->type->fields; - ++ctx->head; - ctx->head->field = field; - ctx->head->parent_offset = parent_offset; - break; - } else { - break; - } - } - } while (ctx->enc_count); - ctx->enc_type = 0; - ctx->is_complex = 0; - return 0; -} -static PyObject * -__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) -{ - const char *ts = *tsp; - int i = 0, number, ndim; - ++ts; - if (ctx->new_count != 1) { - PyErr_SetString(PyExc_ValueError, - "Cannot handle repeated arrays in format string"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ndim = ctx->head->field->type->ndim; - while (*ts && *ts != ')') { - switch (*ts) { - case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; - default: break; - } - number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) - return PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %d", - ctx->head->field->type->arraysize[i], number); - if (*ts != ',' && *ts != ')') - return PyErr_Format(PyExc_ValueError, - "Expected a comma in format string, got '%c'", *ts); - if (*ts == ',') ts++; - i++; - } - if (i != ndim) - return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", - ctx->head->field->type->ndim, i); - if (!*ts) { - PyErr_SetString(PyExc_ValueError, - "Unexpected end of format string, expected ')'"); - return NULL; - } - ctx->is_valid_array = 1; - ctx->new_count = 1; - *tsp = ++ts; - return Py_None; -} -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { - int got_Z = 0; - while (1) { - switch(*ts) { - case 0: - if (ctx->enc_type != 0 && ctx->head == NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - if (ctx->head != NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - return ts; - case ' ': - case '\r': - case '\n': - ++ts; - break; - case '<': - if (!__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '>': - case '!': - if (__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '=': - case '@': - case '^': - ctx->new_packmode = *ts++; - break; - case 'T': - { - const char* ts_after_sub; - size_t i, struct_count = ctx->new_count; - size_t struct_alignment = ctx->struct_alignment; - ctx->new_count = 1; - ++ts; - if (*ts != '{') { - PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - ctx->enc_count = 0; - ctx->struct_alignment = 0; - ++ts; - ts_after_sub = ts; - for (i = 0; i != struct_count; ++i) { - ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); - if (!ts_after_sub) return NULL; - } - ts = ts_after_sub; - if (struct_alignment) ctx->struct_alignment = struct_alignment; - } - break; - case '}': - { - size_t alignment = ctx->struct_alignment; - ++ts; - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - if (alignment && ctx->fmt_offset % alignment) { - ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); - } - } - return ts; - case 'x': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->fmt_offset += ctx->new_count; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->enc_packmode = ctx->new_packmode; - ++ts; - break; - case 'Z': - got_Z = 1; - ++ts; - if (*ts != 'f' && *ts != 'd' && *ts != 'g') { - __Pyx_BufFmt_RaiseUnexpectedChar('Z'); - return NULL; - } - CYTHON_FALLTHROUGH; - case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': - case 'l': case 'L': case 'q': case 'Q': - case 'f': case 'd': case 'g': - case 'O': case 'p': - if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) && - (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) { - ctx->enc_count += ctx->new_count; - ctx->new_count = 1; - got_Z = 0; - ++ts; - break; - } - CYTHON_FALLTHROUGH; - case 's': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_count = ctx->new_count; - ctx->enc_packmode = ctx->new_packmode; - ctx->enc_type = *ts; - ctx->is_complex = got_Z; - ++ts; - ctx->new_count = 1; - got_Z = 0; - break; - case ':': - ++ts; - while(*ts != ':') ++ts; - ++ts; - break; - case '(': - if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL; - break; - default: - { - int number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - ctx->new_count = (size_t)number; - } - } - } -} - -/* BufferGetAndValidate */ - static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (unlikely(info->buf == NULL)) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - __Pyx_ReleaseBuffer(info); -} -static void __Pyx_ZeroBuffer(Py_buffer* buf) { - buf->buf = NULL; - buf->obj = NULL; - buf->strides = __Pyx_zeros; - buf->shape = __Pyx_zeros; - buf->suboffsets = __Pyx_minusones; -} -static int __Pyx__GetBufferAndValidate( - Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, - int nd, int cast, __Pyx_BufFmt_StackElem* stack) -{ - buf->buf = NULL; - if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { - __Pyx_ZeroBuffer(buf); - return -1; - } - if (unlikely(buf->ndim != nd)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - nd, buf->ndim); - goto fail; - } - if (!cast) { - __Pyx_BufFmt_Context ctx; - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; - } - if (unlikely((size_t)buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", - buf->itemsize, (buf->itemsize > 1) ? "s" : "", - dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; - return 0; -fail:; - __Pyx_SafeReleaseBuffer(buf); - return -1; -} - -/* PyFunctionFastCall */ - #if CYTHON_FAST_PYCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = Py_TYPE(func)->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) -#else - if (likely(PyCFunction_Check(func))) -#endif - { - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - -/* PyCFunctionFastCall */ - #if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); - } -} -#endif - -/* PyObjectCallOneArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (__Pyx_PyFastCFunction_Check(func)) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* None */ - static CYTHON_INLINE long __Pyx_div_long(long a, long b) { - long q = a / b; - long r = a - q*b; - q -= ((r != 0) & ((r ^ b) < 0)); - return q; -} - -/* BufferIndexError */ - static void __Pyx_RaiseBufferIndexError(int axis) { - PyErr_Format(PyExc_IndexError, - "Out of bounds on buffer access (axis %d)", axis); -} - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* BufferFallbackError */ - static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, - "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); -} - -/* PyDictVersioning */ - #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { - PyObject **dictptr = NULL; - Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; - if (offset) { -#if CYTHON_COMPILING_IN_CPYTHON - dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); -#else - dictptr = _PyObject_GetDictPtr(obj); -#endif - } - return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; -} -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) - return 0; - return obj_dict_version == __Pyx_get_object_dict_version(obj); -} -#endif - -/* GetModuleGlobalName */ - #if CYTHON_USE_DICT_VERSIONS -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) -#else -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) -#endif -{ - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } else if (unlikely(PyErr_Occurred())) { - return NULL; - } -#else - result = PyDict_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } - PyErr_Clear(); -#endif - return __Pyx_GetBuiltinName(name); -} - -/* PyObjectCall2Args */ - static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { - PyObject *args, *result = NULL; - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {arg1, arg2}; - return __Pyx_PyFunction_FastCall(function, args, 2); - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {arg1, arg2}; - return __Pyx_PyCFunction_FastCall(function, args, 2); - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); -done: - return result; -} - -/* PyFloatBinop */ - #if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) { - const double b = floatval; - double a, result; - (void)inplace; - (void)zerodivision_check; - if (likely(PyFloat_CheckExact(op1))) { - a = PyFloat_AS_DOUBLE(op1); - - } else - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - a = (double) PyInt_AS_LONG(op1); - - } else - #endif - if (likely(PyLong_CheckExact(op1))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - switch (size) { - case 0: a = 0.0; break; - case -1: a = -(double) digits[0]; break; - case 1: a = (double) digits[0]; break; - case -2: - case 2: - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { - a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -2) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - case -3: - case 3: - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { - a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -3) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - case -4: - case 4: - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { - a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -4) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - default: - #else - { - #endif - a = PyLong_AsDouble(op1); - if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL; - - } - } else { - return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)); - } - - PyFPE_START_PROTECT("divide", return NULL) - result = a / b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); -} -#endif - -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* GetTopmostException */ - #if CYTHON_USE_EXC_INFO_STACK -static _PyErr_StackItem * -__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) -{ - _PyErr_StackItem *exc_info = tstate->exc_info; - while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && - exc_info->previous_item != NULL) - { - exc_info = exc_info->previous_item; - } - return exc_info; -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - *type = exc_info->exc_type; - *value = exc_info->exc_value; - *tb = exc_info->exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = type; - exc_info->exc_value = value; - exc_info->exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; icurexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) -#endif -{ - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if CYTHON_USE_EXC_INFO_STACK - { - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = local_type; - exc_info->exc_value = local_value; - exc_info->exc_traceback = local_tb; - } - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, - size_t size, enum __Pyx_ImportType_CheckSize check_size) -{ - PyObject *result = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - result = PyObject_GetAttrString(module, class_name); - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if ((size_t)basicsize < size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - goto bad; - } - if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - goto bad; - } - else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(result); - return NULL; -} -#endif - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, *cython_runtime_dict, - __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -#if PY_MAJOR_VERSION < 3 -static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { - if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); - PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); - return -1; -} -static void __Pyx_ReleaseBuffer(Py_buffer *view) { - PyObject *obj = view->obj; - if (!obj) return; - if (PyObject_CheckBuffer(obj)) { - PyBuffer_Release(view); - return; - } - if ((0)) {} - view->obj = NULL; - Py_DECREF(obj); -} -#endif - - - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* Declarations */ - #if CYTHON_CCOMPLEX - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return ::std::complex< float >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return x + y*(__pyx_t_float_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - __pyx_t_float_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsf(b.real) >= fabsf(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - float r = b.imag / b.real; - float s = (float)(1.0) / (b.real + b.imag * r); - return __pyx_t_float_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - float r = b.real / b.imag; - float s = (float)(1.0) / (b.imag + b.real * r); - return __pyx_t_float_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - float denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_float_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtf(z.real*z.real + z.imag*z.imag); - #else - return hypotf(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - float denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_float(a, a); - case 3: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, a); - case 4: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if (b.imag == 0) { - z.real = powf(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2f(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_float(a); - theta = atan2f(a.imag, a.real); - } - lnr = logf(r); - z_r = expf(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosf(z_theta); - z.imag = z_r * sinf(z_theta); - return z; - } - #endif -#endif - -/* Declarations */ - #if CYTHON_CCOMPLEX - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return ::std::complex< double >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return x + y*(__pyx_t_double_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - __pyx_t_double_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabs(b.real) >= fabs(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - double r = b.imag / b.real; - double s = (double)(1.0) / (b.real + b.imag * r); - return __pyx_t_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - double r = b.real / b.imag; - double s = (double)(1.0) / (b.imag + b.real * r); - return __pyx_t_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrt(z.real*z.real + z.imag*z.imag); - #else - return hypot(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_double(a, a); - case 3: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, a); - case 4: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if (b.imag == 0) { - z.real = pow(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_double(a); - theta = atan2(a.imag, a.real); - } - lnr = log(r); - z_r = exp(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cos(z_theta); - z.imag = z_r * sin(z_theta); - return z; - } - #endif -#endif - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; ip) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { - int retval; - if (unlikely(!x)) return -1; - retval = __Pyx_PyObject_IsTrue(x); - Py_DECREF(x); - return retval; -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(b); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.cp38-win_amd64.exp b/landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.cp38-win_amd64.exp deleted file mode 100644 index f83e40e480bc9bc957bc2a5d67923b40152b9ed6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 800 zcmZuv;c62>5S}Ep)gsdTlTsl+@}otwUUDI%r9!A8mbOunQbZQQ=5`ZT@3P0;UX%I& zzJw1X_{&%E3GB>Xu8G*;X6DAVk7v-`HunoB|C508s1G)*SME$j-HqrO+ zV^WQ?X??h)pnL|vC2?3~b z9ZGIh6f-Q|aK#%w>+*pLl}HuO1K7(|7kmZ(?^`Wmcn-(aEv)&Q3OIQJ&){bUaG`_5 zq-J7k`-6kp`Dy*j<`y#NE&fszVL`55y>pD+!_;d5l&5_?dOOPF)5$8 z#{;!cbbFQjN~f6!YeSn!ZTNNC@|uVI>NUS~w=RYVn{C!QWWLw*eLmJR{?4TKW4FT> zoi-2k>?@U|HT34=QZf!h`GBxQJt_P&3)1uK@X A82|tP diff --git a/landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.cp38-win_amd64.lib b/landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.cp38-win_amd64.lib deleted file mode 100644 index 96b04a719d7f56f5087c6f2cbbe86ad27c605349..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2088 zcmc&#&2JJx6#wyIs~cm8_1YAh#*agxuzZ=Q*(w@Iff5SW4#;A=Nht&&re3^pF#Z`$ zy!a1z>&Zrqi5HW4(}M?(9=zxQ-|WuNT?H1BrcN?5@4b2R@qYVzZ!h1hwrktBm2lA6 zmLpDGYAZsBq*6kvC;-j?-c7)N1k5Y~v-`X=mdO>?izSx6w{f?aDU{ZWY^Ppl_l=!S zz0GQ&T1!nWKQVS$wV@|sU@TwGX8+xUXJd9*drA+=`8AeaEv=%km)SKsj*IAIqtRl+ zR;G^o#&O(!3VhQG9Fed%1MJV5K)??Vyfpeoyyb*Y86DJAc!mFh!0pScQOSjhGUmI4 zT6;Rek}hJ4+u8A?I$)LF^WoO>&)-xJaF&qfEu_~UcDI%`EDb1=@IoqL))2T8GW2Sv zx)ha5mq_?Z{iiVaXx6ZDAp8=-j35bfbf5I&b`8M;`pCF~b6mxOOVC#_7a$_wqv;J? zz&sAS7js6f-F)19)CpcIUJqt7`8Bcbn9h^NAICeTlPLvgr2HbA%gxYg%|?r2I_!Ep z{l5Ja+D??@T|%P)W?0+OVuE1ZEqr3!hc;p06F;_adyEgF@za5v(D>xVQyTwI5m2UO zUNkAGT2b_#7q7m&{r$lVf`>AkdAhYU7;Vf`rI9o5wN%8+nRjZ8nuHVc^ste|cUmOX zXu^@h?|;2~^Mfw12r?YWF*zKU;PD#3bJ*TAXflTfT;zV=?M@_fzf(bc60{@qpy?{K eq~?TGG-<2Q051f3Fa4?i&VtB4^snSrTK)jNPpqW? diff --git a/landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.obj b/landcover-L-SAR/tool/algorithm/algtools/filter/build/temp.win-amd64-3.8/Release/build/lee_Filter/lee_Filter_c.obj deleted file mode 100644 index 7a12ef4c2cef5755ebd64d1f63d2d4497e40584e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390839 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ℜ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 sbh`APRA2O?^5lJ_lCVjOJe#_= 3, 'ERROR: win size must be at least 3' - - if win_size % 2 == 0: - print('It is highly recommended to user odd window sizes.' - 'You provided %s, an even number.' % (win_size, )) - - @staticmethod - def assert_indices_in_range(width, height, xleft, xright, yup, ydown): - """ - Asserts index out of image range. - """ - - # assert xleft >= 0 and xleft <= width, \ - assert 0 <= xleft <= width, \ - "index xleft:%s out of range (%s<= xleft < %s)" % (xleft, 0, width) - - # assert xright >= 0 and xright <= width, \ - assert 0 <= xright <= width, "index xright:%s out of range (%s<= xright < %s)" % (xright, 0, width) - - # assert yup >= 0 and yup <= height, \ - assert 0 <= yup <= height, "index yup:%s out of range. (%s<= yup < %s)" % (yup, 0, height) - - # assert ydown >= 0 and ydown <= height, \ - assert 0 <= ydown <= height, "index ydown:%s out of range. (%s<= ydown < %s)" % (ydown, 0, height) - - @staticmethod - def weighting(window, cu=CU_DEFAULT): - """ - Computes the weighthing function for Lee filter using cu as the noise - coefficient. - """ - # cu is the noise variation coefficient - two_cu = cu * cu - - # ci is the variation coefficient in the window - window_mean = window.mean() - window_std = window.std() - ci = window_std / window_mean - - two_ci = ci * ci - - if not two_ci: # dirty patch to avoid zero division - two_ci = COEF_VAR_DEFAULT - - if cu > ci: - w_t = 0.0 - else: - w_t = 1.0 - (two_cu / two_ci) - - return w_t - - def lee_filter(self, in_path, out_path, win_size): - """ - Apply lee to a numpy matrix containing the image, with a window of - win_size x win_size. - """ - cu = CU_DEFAULT - self.assert_window_size(win_size) - # img = self.ImageHandler.get_band_array(img, 1) - array1 = Image.open(in_path) - img = np.array(array1) - # we process the entire img as float64 to avoid type overflow error - img = np.float64(img) - img_filtered = np.zeros_like(img) - # n, m = img.shape - # win_offset = win_size / 2 - # - # for i in range(0, n): - # xleft = i - win_offset - # xright = i + win_offset - # - # if xleft < 0: - # xleft = 0 - # if xright >= n: - # xright = n - # - # for j in range(0, m): - # yup = j - win_offset - # ydown = j + win_offset - # - # if yup < 0: - # yup = 0 - # if ydown >= m: - # ydown = m - # - # self.assert_indices_in_range(n, m, xleft, xright, yup, ydown) - # - # pix_value = img[i, j] - # - # window = img[math.ceil(xleft):int(xright)+1, math.ceil(yup):int(ydown)+1] - # w_t = self.weighting(window, cu) - # window_mean = window.mean() - # new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) - # - # if not new_pix_value > 0: - # new_pix_value = 0 - # img_filtered[i, j] = round(new_pix_value) - # # return img_filtered - self.lee_filter_array(img, img_filtered, win_size) - out_image = Image.fromarray(img_filtered) - out_image.save(out_path) - print("lee_filter finish! path:" + out_path) - return True - - @staticmethod - def lee_filter_array(in_arry, out_arry, win_size): - """ - Apply lee to a numpy matrix containing the image, with a window of - win_size x win_size. - """ - f = Filter() - #cu = CU_DEFAULT - f.assert_window_size(win_size) - img = in_arry - # we process the entire img as float64 to avoid type overflow error - img = np.float64(img) - img = img + 100 - - # lee_filter_array(np.ndarray[double,ndim=2] img,np.ndarray[double,ndim=2] out_arryint win_offset,int win_size): - newOUt=lee_Filter_c.lee_filter_array(img,out_arry,win_size) - newOUt=newOUt-100 - out_arry[:,:]=newOUt[:,:] - - # def lee_filter_array(self, in_arry, out_arry, win_size): - # """ - # Apply lee to a numpy matrix containing the image, with a window of - # win_size x win_size. - # """ - # cu = CU_DEFAULT - # self.assert_window_size(win_size) - # img = in_arry - # # we process the entire img as float64 to avoid type overflow error - # img = np.float64(img) - # img = img + 100 - # img_filtered = np.zeros_like(img) - # n, m = img.shape - # win_offset = win_size / 2 - # - # for i in range(0, n): - # xleft = i - win_offset - # xright = i + win_offset - # - # if xleft < 0: - # xleft = 0 - # if xright >= n: - # xright = n - # - # for j in range(0, m): - # yup = j - win_offset - # ydown = j + win_offset - # - # if yup < 0: - # yup = 0 - # if ydown >= m: - # ydown = m - # - # self.assert_indices_in_range(n, m, xleft, xright, yup, ydown) - # - # pix_value = img[i, j] - # - # window = img[math.ceil(xleft):int(xright)+1, math.ceil(yup):int(ydown)+1] - # w_t = self.weighting(window, cu) - # window_mean = window.mean() - # new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) - # - # if not new_pix_value > 0: - # new_pix_value = 0 - # out_arry[i, j] = round(new_pix_value) - # out_arry = out_arry - 100 - # - - def lee_filter_multiprocess(self, in_paths, out_paths, win_size =3,processes_num=10): - if len(in_paths) != len(out_paths): - return False - # 开启多进程处理 - pool = multiprocessing.Pool(processes=processes_num) - pl = [] - for i in range(len(in_paths)): - #self.lee_filter(in_paths[i], out_paths[i], win_size) - pl.append(pool.apply_async(self.lee_filter,(in_paths[i], out_paths[i], win_size))) - print("lee_filter runing! path:" + in_paths[i]) - pool.close() - pool.join() - return True - - - def lee_filter_block_multiprocess(self, in_path, out_path, win_size =3): - in_name = os.path.basename(in_path) - out_name = os.path.basename(out_path) - outDir= os.path.split(out_path)[0] - #创建工作文件夹 - src_path = os.path.join(outDir, "src_img") - block_path = os.path.join(outDir, "block") - block_filtered = os.path.join(outDir, "block_filtered") - file.creat_dirs([src_path, block_path, block_filtered]) - - shutil.copyfile(in_path, os.path.join(src_path, in_name)) - cols = ImageHandler.get_img_width(in_path) - rows = ImageHandler.get_img_height(in_path) - # 分块 - bp = BlockProcess() - block_size = bp.get_block_size(rows, cols) - bp.cut(src_path, block_path, ['tif', 'tiff'], 'tif', block_size) - logger.info('blocking tifs success!') - - img_dir, img_name = bp.get_file_names(block_path, ['tif']) - dir_dict = bp.get_same_img(img_dir, img_name) - - img_path_list = [value for value in dir_dict.values()][0] - - processes_num = min([len(img_path_list), multiprocessing.cpu_count() - 1]) - - out_img_path_list =[] - for in_path in img_path_list: - suffix = bp.get_suffix(os.path.basename(in_path)) - out_path = os.path.join(block_filtered, out_name.replace('.tif', suffix)) - out_img_path_list.append(out_path) - - self.lee_filter_multiprocess(img_path_list, out_img_path_list, win_size = win_size, processes_num=processes_num) - # 开启多进程处理 - # pool = multiprocessing.Pool(processes=processes_num) - # - # for i in range(len(hh_list)): - # block_img_path = hh_list[i] - # suffix = bp.get_suffix(os.path.basename(hh_list[i])) - # filed_block_img_path = os.path.join(block_filtered,out_name.replace('.tif',suffix)) - # pool.apply_async(self.lee_filter, (block_img_path, filed_block_img_path, win_size)) - # print("lee_filter runing! path:" + block_img_path) - # logger.info('total:%s, block:%s lee_filter!', len(hh_list), i) - # - # pool.close() - # pool.join() - # # 合并处理后的影像 - bp.combine(block_filtered, cols, rows, outDir, file_type=['tif'], datetype='float32') - - file.del_folder(src_path) - file.del_folder(block_path) - file.del_folder(block_filtered) - pass - - def lee_process_sar(self, in_sar, out_sar, win_size, noise_var): - ''' - # std::cout << "mode 12" - # std::cout << "SIMOrthoProgram.exe 12 in_sar_path out_sar_path win_size noise_var" - ''' - exe_path = r".\baseTool\x64\Release\SIMOrthoProgram-L-SAR.exe" - exe_cmd = r"set PROJ_LIB=.\baseTool\x64\Release; & {0} {1} {2} {3} {4} {5}".format(exe_path, 12, in_sar, - out_sar, win_size, noise_var) - print(exe_cmd) - print(os.system(exe_cmd)) - print("==========================================================================") - - -if __name__ == '__main__': - # 示例1: - # path = r"I:\MicroWorkspace\product\C-SAR\LeafAreaIndex\Temporary\cai_sartif\HV_0_512_0_512.tif" - # f = Filter() - # f.lee_filter(path,path,3) - #示例2: - - f = Filter() - f.lee_filter_block_multiprocess('I:\preprocessed\HH.tif','I:\preprocessed\HHf.tif') - pass diff --git a/landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter/lee_Filter_c.pyx b/landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter/lee_Filter_c.pyx deleted file mode 100644 index 413b8a6..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter/lee_Filter_c.pyx +++ /dev/null @@ -1,124 +0,0 @@ -# -*- coding: UTF-8 -*- -""" -@Project:__init__.py -@File:lee_filter.py -@Function:lee_filter -@Contact: https://github.com/PyRadar/pyradar -@Author:SHJ -@Date:2021/8/30 8:42 -@Version:1.0.0 -""" - -import os -cimport cython # 必须导入 -import numpy as np##必须为c类型和python类型的数据都申明一个np -cimport numpy as np # 必须为c类型和python类型的数据都申明一个np -from libc.math cimport pi -from libc.math cimport atan as math_atan -from libc.math cimport log10 as math_log10 -from libc.math cimport log as math_log -from libc.math cimport floor as math_floor -from libc.math cimport sqrt as math_sqrt -from libc.math cimport exp as math_exp -from libc.math cimport sin as math_sin -from libc.math cimport cos as math_cos -from libc.math cimport tan as math_tan -from libc.math cimport asin as math_asin -from libc.math cimport acos as math_acos -from libc.math cimport tan as math_atan -from libc.math cimport sinh as math_sinh -from libc.math cimport cosh as math_cosh -from libc.math cimport tanh as math_tanh -from libc.math cimport floor as math_floor -from libc.math cimport ceil as math_ceil -from libc.math cimport lround as math_round - -cdef double COEF_VAR_DEFAULT = 0.01 -cdef double CU_DEFAULT = 0.25 - - -cdef int ceil_usr(double v): - return int(math_ceil(v)) - - - -cdef double weighting(np.ndarray[double,ndim=2] window,double cu): - """ - Computes the weighthing function for Lee filter using cu as the noise - coefficient. - """ - # cu is the noise variation coefficient - cdef double two_cu = cu * cu - - # ci is the variation coefficient in the window - cdef double window_mean = window.mean() - cdef double window_std = window.std() - cdef double ci = window_std / window_mean - - cdef double two_ci = ci * ci - cdef double w_t=0; - if not (two_ci==0): # dirty patch to avoid zero division - two_ci = COEF_VAR_DEFAULT - - if cu > ci: - w_t = 0.0 - else: - w_t = 1.0 - (two_cu / two_ci) - - return w_t - -cpdef np.ndarray[double,ndim=2] lee_filter_array(np.ndarray[double,ndim=2] img,np.ndarray[double,ndim=2] out_arry,int win_size): - """ - Apply lee to a numpy matrix containing the image, with a window of - win_size x win_size. - """ - # we process the entire img as float64 to avoid type overflow error - #n, m = img.shape - cdef double cu = CU_DEFAULT - cdef int i=0 - cdef int j=0 - cdef int xleft=0 - cdef int xright=0 - cdef int yup=0 - cdef int ydown=0 - cdef np.ndarray[double,ndim=2] window; - cdef double w_t=0; - cdef double window_mean=0; - cdef double new_pix_valu=0; - cdef int n = img.shape[0] - cdef int m=img.shape[1] - cdef int win_offset=int(win_size/2) - - while i= n: - xright = n - j=0 - while j= m: - ydown = m - - pix_value = img[i, j] - - window = img[xleft:xright+1, yup:ydown+1] - - w_t = weighting(window, cu) - - window_mean = np.mean(window) - new_pix_value = (pix_value * w_t) + (window_mean * (1.0 - w_t)) - - if not new_pix_value > 0: - new_pix_value = 0 - out_arry[i, j] = round(new_pix_value*100000.0)/100000.0 - j=j+1 - i=i+1 - return out_arry - diff --git a/landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter_c.cp38-win_amd64.pyd b/landcover-L-SAR/tool/algorithm/algtools/filter/lee_Filter_c.cp38-win_amd64.pyd deleted file mode 100644 index 0ed7504553200f48ee043209552671deb9f28642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56832 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

*#ZL2h*$g!ww@RK0sUomi&ec$@V|6cD%%$Us| zJrhZM&whO|Nn$7O#V_ionCKbN^R``6-)+>xNvoHiPHXpcA#TxOtLNd79Y1g?-WRIA z-di32FC%Z4h3ytb`JL$5mODRs5y2+Yf}G_$Z_m*=c5D1uzNowj%h%kAjd~e(K za(dGEvwTY|-w7*^qprrEHIz-3@2utfNF!Hm;2*SntFBSMU6!xg@?A}T!_K@waWA8-i4dp}=CQ$R(plcY{EPB8@Sdv2hkJvxaOLeDR1g=pm?3I!g8ZBDu3wSs6O)C1o!z znUi|0+o?=*It>tU#ZpKH-PDqfWto<8uc^$+PvRprF>SgU1s%e15^bI9P)x$flsqGa zNg~SYUBTWC~+jVCCvtdBmU`qB2!_p3O#-ce-?sO;JsL z=pKQ)t#cFq&{O47z=okzbn~@b7?cZNcj4Zb^@DSQBjwtvI6y<7e$l2Hi0>c0;nzCG07>uT=we*9KG@{z>>LjEq2s_E6mwhIMU%wbv%X-=XoZ7LY!ueD!F(Ryrquo|`A zRwo)aX5WqhmI+SK481oIKh{`SP2U;q*9v~1Cy!4$v?_G6zQlN3g*pJjicfM{JCdJ$p^{X+(tLASD zsFibvRvfW3jrp17uVg;Tc#hx_loZ#o17Uq?TMkp>dsCPSuGOH4m=4$ zH0HGBnH7edL7AV6M;6}{*_W+PZHChP`V_+OYoBS$m8K`eKJ(siygr(4s%EtlE=o5ugNMgSSsbo9UF&@9VC2AU0!8#eNa)99qigZq-1u_q3o_}S0hYyRByDZ!tb++ zV`Z3eY9b?-VXUmN+;$nltCifkr{IA^G_x3ks`<~Wl{>vE)1Ol*iFAa1ku|eaHLcf` zDZA>E_L;Y~8Hx$bEEoy6xrF*s9AxM-LKYTs-Xifc`I+drlZcmR)fg0+xu* zBf5DK38GU&W&V+|Vov*{Us$lRFb~a2w1f2q-pekOSsCEXiJ`Ej(z5g-pahMGNlZ$a z>7i_5ztmjEStzWU<#ZSrJ=bg?Mw2>a8GF7yH>~pt-407Vnwa2ga%u#4BH6-^(~%Wd zjTQ|fsVPB&8r=+wh+3BsQ6iZ@rqTNQA+PAMv#H4u-zMR!h<~tx^3$$_c55`LS2j;4 zTlW<4MuRAN7QVRs$=o6|`Niq-9JjMhd6*VVi+|7Zf8n1&gk;m@OcVV})1$cFO!aMO z&oR#*$}vWVL~poNrap5jd*yTWl&;SE{-4%X?#h$oUVj(xIO%zCfsb)7eL46kfeX3U z1}<>#BBfpcPXfO|dJFs{P`*)bI33+&ljmOa9Z)1@0uB z15XN#bRPUHa3y!fC&ARMt_a9V z1qUX!Gwvp+6Y!r&%fVF--4Se)F;HQC)=BVe3;J_dF*faRV z5x(!rqg(JUZW8=9X}QpW(H(1n2SUCvfG$vOZ5#xT-=&s2)qh#VPM{0?=rQyR-UU2Q zdLDcdxM`SY$qPL9Ff?#=oYQgATi{c`bzh?X;N8GGAEEw&1EV|90^cF6dda|NzJgqE z&T`b{uko!Jc>KtSMa^A{#NM}xO^uk-xeK&U!Z(>@_o-maDgXC zz2yDi_y1V~P22~-A8X5xx0CztJa)}MpWBRG^G?38do-TK;&*QyF65)2_?848{w5rc zSayb0+LpvX|IUt031T<0*JqFGZApxHL1ODY3+CNTaMLRcvVTB8G1!velwxzhZN`Ed zbQJt_r4*F1VF&B{&2CWWJi0DH+`Q;#xg~MHg#S%xB5G|Ui-#HN_`W8c)%~iRvG%d9 zu}x#$W2eSWk4=reId*BR{miDPl209cYU-)CpHky3 date_interval: - os.remove(file_path) - -# -# if __name__ == "__main__": -# # eg2: -# log_handler = LogHandler() -# log_handler.init_log_handler(r"run_log\myrun1") -# logging.warning("1") -# print("done") diff --git a/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/oh2004/oh2004.c b/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/oh2004/oh2004.c deleted file mode 100644 index f0bbecc..0000000 --- a/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/oh2004/oh2004.c +++ /dev/null @@ -1,9665 +0,0 @@ -/* Generated by Cython 0.29.24 */ - -/* BEGIN: Cython Metadata -{ - "distutils": { - "depends": [], - "name": "oh2004", - "sources": [ - "./oh2004/oh2004.pyx" - ] - }, - "module_name": "oh2004" -} -END: Cython Metadata */ - -#ifndef PY_SSIZE_T_CLEAN -#define PY_SSIZE_T_CLEAN -#endif /* PY_SSIZE_T_CLEAN */ -#include "Python.h" -#ifndef Py_PYTHON_H - #error Python headers needed to compile C extensions, please install development version of Python. -#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) - #error Cython requires Python 2.6+ or Python 3.3+. -#else -#define CYTHON_ABI "0_29_24" -#define CYTHON_HEX_VERSION 0x001D18F0 -#define CYTHON_FUTURE_DIVISION 0 -#include -#ifndef offsetof - #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) -#endif -#if !defined(WIN32) && !defined(MS_WINDOWS) - #ifndef __stdcall - #define __stdcall - #endif - #ifndef __cdecl - #define __cdecl - #endif - #ifndef __fastcall - #define __fastcall - #endif -#endif -#ifndef DL_IMPORT - #define DL_IMPORT(t) t -#endif -#ifndef DL_EXPORT - #define DL_EXPORT(t) t -#endif -#define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #if PY_VERSION_HEX >= 0x02070000 - #define HAVE_LONG_LONG - #endif -#endif -#ifndef PY_LONG_LONG - #define PY_LONG_LONG LONG_LONG -#endif -#ifndef Py_HUGE_VAL - #define Py_HUGE_VAL HUGE_VAL -#endif -#ifdef PYPY_VERSION - #define CYTHON_COMPILING_IN_PYPY 1 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #undef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 0 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #if PY_VERSION_HEX < 0x03050000 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #undef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #undef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 1 - #undef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 0 - #undef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 0 - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#elif defined(PYSTON_VERSION) - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 1 - #define CYTHON_COMPILING_IN_CPYTHON 0 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #undef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 0 - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #undef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 0 - #undef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 0 - #undef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT 0 - #undef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE 0 - #undef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS 0 - #undef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK 0 -#else - #define CYTHON_COMPILING_IN_PYPY 0 - #define CYTHON_COMPILING_IN_PYSTON 0 - #define CYTHON_COMPILING_IN_CPYTHON 1 - #ifndef CYTHON_USE_TYPE_SLOTS - #define CYTHON_USE_TYPE_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYTYPE_LOOKUP - #define CYTHON_USE_PYTYPE_LOOKUP 0 - #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) - #define CYTHON_USE_PYTYPE_LOOKUP 1 - #endif - #if PY_MAJOR_VERSION < 3 - #undef CYTHON_USE_ASYNC_SLOTS - #define CYTHON_USE_ASYNC_SLOTS 0 - #elif !defined(CYTHON_USE_ASYNC_SLOTS) - #define CYTHON_USE_ASYNC_SLOTS 1 - #endif - #if PY_VERSION_HEX < 0x02070000 - #undef CYTHON_USE_PYLONG_INTERNALS - #define CYTHON_USE_PYLONG_INTERNALS 0 - #elif !defined(CYTHON_USE_PYLONG_INTERNALS) - #define CYTHON_USE_PYLONG_INTERNALS 1 - #endif - #ifndef CYTHON_USE_PYLIST_INTERNALS - #define CYTHON_USE_PYLIST_INTERNALS 1 - #endif - #ifndef CYTHON_USE_UNICODE_INTERNALS - #define CYTHON_USE_UNICODE_INTERNALS 1 - #endif - #if PY_VERSION_HEX < 0x030300F0 - #undef CYTHON_USE_UNICODE_WRITER - #define CYTHON_USE_UNICODE_WRITER 0 - #elif !defined(CYTHON_USE_UNICODE_WRITER) - #define CYTHON_USE_UNICODE_WRITER 1 - #endif - #ifndef CYTHON_AVOID_BORROWED_REFS - #define CYTHON_AVOID_BORROWED_REFS 0 - #endif - #ifndef CYTHON_ASSUME_SAFE_MACROS - #define CYTHON_ASSUME_SAFE_MACROS 1 - #endif - #ifndef CYTHON_UNPACK_METHODS - #define CYTHON_UNPACK_METHODS 1 - #endif - #ifndef CYTHON_FAST_THREAD_STATE - #define CYTHON_FAST_THREAD_STATE 1 - #endif - #ifndef CYTHON_FAST_PYCALL - #define CYTHON_FAST_PYCALL 1 - #endif - #ifndef CYTHON_PEP489_MULTI_PHASE_INIT - #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) - #endif - #ifndef CYTHON_USE_TP_FINALIZE - #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) - #endif - #ifndef CYTHON_USE_DICT_VERSIONS - #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) - #endif - #ifndef CYTHON_USE_EXC_INFO_STACK - #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) - #endif -#endif -#if !defined(CYTHON_FAST_PYCCALL) -#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) -#endif -#if CYTHON_USE_PYLONG_INTERNALS - #include "longintrepr.h" - #undef SHIFT - #undef BASE - #undef MASK - #ifdef SIZEOF_VOID_P - enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; - #endif -#endif -#ifndef __has_attribute - #define __has_attribute(x) 0 -#endif -#ifndef __has_cpp_attribute - #define __has_cpp_attribute(x) 0 -#endif -#ifndef CYTHON_RESTRICT - #if defined(__GNUC__) - #define CYTHON_RESTRICT __restrict__ - #elif defined(_MSC_VER) && _MSC_VER >= 1400 - #define CYTHON_RESTRICT __restrict - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_RESTRICT restrict - #else - #define CYTHON_RESTRICT - #endif -#endif -#ifndef CYTHON_UNUSED -# if defined(__GNUC__) -# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) -# define CYTHON_UNUSED __attribute__ ((__unused__)) -# else -# define CYTHON_UNUSED -# endif -#endif -#ifndef CYTHON_MAYBE_UNUSED_VAR -# if defined(__cplusplus) - template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } -# else -# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) -# endif -#endif -#ifndef CYTHON_NCP_UNUSED -# if CYTHON_COMPILING_IN_CPYTHON -# define CYTHON_NCP_UNUSED -# else -# define CYTHON_NCP_UNUSED CYTHON_UNUSED -# endif -#endif -#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int32 uint32_t; - #endif - #endif -#else - #include -#endif -#ifndef CYTHON_FALLTHROUGH - #if defined(__cplusplus) && __cplusplus >= 201103L - #if __has_cpp_attribute(fallthrough) - #define CYTHON_FALLTHROUGH [[fallthrough]] - #elif __has_cpp_attribute(clang::fallthrough) - #define CYTHON_FALLTHROUGH [[clang::fallthrough]] - #elif __has_cpp_attribute(gnu::fallthrough) - #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] - #endif - #endif - #ifndef CYTHON_FALLTHROUGH - #if __has_attribute(fallthrough) - #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) - #else - #define CYTHON_FALLTHROUGH - #endif - #endif - #if defined(__clang__ ) && defined(__apple_build_version__) - #if __apple_build_version__ < 7000000 - #undef CYTHON_FALLTHROUGH - #define CYTHON_FALLTHROUGH - #endif - #endif -#endif - -#ifndef CYTHON_INLINE - #if defined(__clang__) - #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) - #elif defined(__GNUC__) - #define CYTHON_INLINE __inline__ - #elif defined(_MSC_VER) - #define CYTHON_INLINE __inline - #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define CYTHON_INLINE inline - #else - #define CYTHON_INLINE - #endif -#endif - -#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) - #define Py_OptimizeFlag 0 -#endif -#define __PYX_BUILD_PY_SSIZE_T "n" -#define CYTHON_FORMAT_SSIZE_T "z" -#if PY_MAJOR_VERSION < 3 - #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #define __Pyx_DefaultClassType PyClass_Type -#else - #define __Pyx_BUILTIN_MODULE_NAME "builtins" -#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#endif - #define __Pyx_DefaultClassType PyType_Type -#endif -#ifndef Py_TPFLAGS_CHECKTYPES - #define Py_TPFLAGS_CHECKTYPES 0 -#endif -#ifndef Py_TPFLAGS_HAVE_INDEX - #define Py_TPFLAGS_HAVE_INDEX 0 -#endif -#ifndef Py_TPFLAGS_HAVE_NEWBUFFER - #define Py_TPFLAGS_HAVE_NEWBUFFER 0 -#endif -#ifndef Py_TPFLAGS_HAVE_FINALIZE - #define Py_TPFLAGS_HAVE_FINALIZE 0 -#endif -#ifndef METH_STACKLESS - #define METH_STACKLESS 0 -#endif -#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) - #ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - #endif - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); - typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, - Py_ssize_t nargs, PyObject *kwnames); -#else - #define __Pyx_PyCFunctionFast _PyCFunctionFast - #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords -#endif -#if CYTHON_FAST_PYCCALL -#define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) -#else -#define __Pyx_PyFastCFunction_Check(func) 0 -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) - #define PyObject_Malloc(s) PyMem_Malloc(s) - #define PyObject_Free(p) PyMem_Free(p) - #define PyObject_Realloc(p) PyMem_Realloc(p) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 - #define PyMem_RawMalloc(n) PyMem_Malloc(n) - #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) - #define PyMem_RawFree(p) PyMem_Free(p) -#endif -#if CYTHON_COMPILING_IN_PYSTON - #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) -#else - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) -#endif -#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#elif PY_VERSION_HEX >= 0x03060000 - #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() -#elif PY_VERSION_HEX >= 0x03000000 - #define __Pyx_PyThreadState_Current PyThreadState_GET() -#else - #define __Pyx_PyThreadState_Current _PyThreadState_Current -#endif -#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) -#include "pythread.h" -#define Py_tss_NEEDS_INIT 0 -typedef int Py_tss_t; -static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { - *key = PyThread_create_key(); - return 0; -} -static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { - Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); - *key = Py_tss_NEEDS_INIT; - return key; -} -static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { - PyObject_Free(key); -} -static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { - return *key != Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { - PyThread_delete_key(*key); - *key = Py_tss_NEEDS_INIT; -} -static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { - return PyThread_set_key_value(*key, value); -} -static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { - return PyThread_get_key_value(*key); -} -#endif -#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) -#define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) -#else -#define __Pyx_PyDict_NewPresized(n) PyDict_New() -#endif -#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION - #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) -#else - #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) - #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) -#endif -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS -#define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) -#else -#define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) -#endif -#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) - #define CYTHON_PEP393_ENABLED 1 - #if defined(PyUnicode_IS_READY) - #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ - 0 : _PyUnicode_Ready((PyObject *)(op))) - #else - #define __Pyx_PyUnicode_READY(op) (0) - #endif - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) - #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) - #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) - #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) - #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) - #endif - #else - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) - #endif -#else - #define CYTHON_PEP393_ENABLED 0 - #define PyUnicode_1BYTE_KIND 1 - #define PyUnicode_2BYTE_KIND 2 - #define PyUnicode_4BYTE_KIND 4 - #define __Pyx_PyUnicode_READY(op) (0) - #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) - #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) - #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) - #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) - #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) - #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) - #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) - #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) -#endif -#if CYTHON_COMPILING_IN_PYPY - #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) -#else - #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) - #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ - PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) - #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) - #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) -#endif -#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) - #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) -#endif -#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) -#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) -#else - #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) -#endif -#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) - #define PyObject_ASCII(o) PyObject_Repr(o) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBaseString_Type PyUnicode_Type - #define PyStringObject PyUnicodeObject - #define PyString_Type PyUnicode_Type - #define PyString_Check PyUnicode_Check - #define PyString_CheckExact PyUnicode_CheckExact -#ifndef PyObject_Unicode - #define PyObject_Unicode PyObject_Str -#endif -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) - #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) -#else - #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) - #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) -#endif -#ifndef PySet_CheckExact - #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) -#endif -#if PY_VERSION_HEX >= 0x030900A4 - #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) -#else - #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) - #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) -#endif -#if CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) -#else - #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyIntObject PyLongObject - #define PyInt_Type PyLong_Type - #define PyInt_Check(op) PyLong_Check(op) - #define PyInt_CheckExact(op) PyLong_CheckExact(op) - #define PyInt_FromString PyLong_FromString - #define PyInt_FromUnicode PyLong_FromUnicode - #define PyInt_FromLong PyLong_FromLong - #define PyInt_FromSize_t PyLong_FromSize_t - #define PyInt_FromSsize_t PyLong_FromSsize_t - #define PyInt_AsLong PyLong_AsLong - #define PyInt_AS_LONG PyLong_AS_LONG - #define PyInt_AsSsize_t PyLong_AsSsize_t - #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask - #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask - #define PyNumber_Int PyNumber_Long -#endif -#if PY_MAJOR_VERSION >= 3 - #define PyBoolObject PyLongObject -#endif -#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY - #ifndef PyUnicode_InternFromString - #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) - #endif -#endif -#if PY_VERSION_HEX < 0x030200A4 - typedef long Py_hash_t; - #define __Pyx_PyInt_FromHash_t PyInt_FromLong - #define __Pyx_PyInt_AsHash_t PyInt_AsLong -#else - #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t - #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t -#endif -#if PY_MAJOR_VERSION >= 3 - #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) -#else - #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) -#endif -#if CYTHON_USE_ASYNC_SLOTS - #if PY_VERSION_HEX >= 0x030500B1 - #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods - #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) - #else - #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) - #endif -#else - #define __Pyx_PyType_AsAsync(obj) NULL -#endif -#ifndef __Pyx_PyAsyncMethodsStruct - typedef struct { - unaryfunc am_await; - unaryfunc am_aiter; - unaryfunc am_anext; - } __Pyx_PyAsyncMethodsStruct; -#endif - -#if defined(WIN32) || defined(MS_WINDOWS) - #define _USE_MATH_DEFINES -#endif -#include -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif -#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) -#define __Pyx_truncl trunc -#else -#define __Pyx_truncl truncl -#endif - -#define __PYX_MARK_ERR_POS(f_index, lineno) \ - { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } -#define __PYX_ERR(f_index, lineno, Ln_error) \ - { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } - -#ifndef __PYX_EXTERN_C - #ifdef __cplusplus - #define __PYX_EXTERN_C extern "C" - #else - #define __PYX_EXTERN_C extern - #endif -#endif - -#define __PYX_HAVE__oh2004 -#define __PYX_HAVE_API__oh2004 -/* Early includes */ -#include -#include -#include "numpy/arrayobject.h" -#include "numpy/ndarrayobject.h" -#include "numpy/ndarraytypes.h" -#include "numpy/arrayscalars.h" -#include "numpy/ufuncobject.h" - - /* NumPy API declarations from "numpy/__init__.pxd" */ - -#include -#ifdef _OPENMP -#include -#endif /* _OPENMP */ - -#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) -#define CYTHON_WITHOUT_ASSERTIONS -#endif - -typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; - const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; - -#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 -#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) -#define __PYX_DEFAULT_STRING_ENCODING "" -#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString -#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#define __Pyx_uchar_cast(c) ((unsigned char)c) -#define __Pyx_long_cast(x) ((long)x) -#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ - (sizeof(type) < sizeof(Py_ssize_t)) ||\ - (sizeof(type) > sizeof(Py_ssize_t) &&\ - likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX) &&\ - (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ - v == (type)PY_SSIZE_T_MIN))) ||\ - (sizeof(type) == sizeof(Py_ssize_t) &&\ - (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ - v == (type)PY_SSIZE_T_MAX))) ) -static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { - return (size_t) i < (size_t) limit; -} -#if defined (__cplusplus) && __cplusplus >= 201103L - #include - #define __Pyx_sst_abs(value) std::abs(value) -#elif SIZEOF_INT >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) abs(value) -#elif SIZEOF_LONG >= SIZEOF_SIZE_T - #define __Pyx_sst_abs(value) labs(value) -#elif defined (_MSC_VER) - #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - #define __Pyx_sst_abs(value) llabs(value) -#elif defined (__GNUC__) - #define __Pyx_sst_abs(value) __builtin_llabs(value) -#else - #define __Pyx_sst_abs(value) ((value<0) ? -value : value) -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); -#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) -#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) -#define __Pyx_PyBytes_FromString PyBytes_FromString -#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); -#if PY_MAJOR_VERSION < 3 - #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize -#else - #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString - #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize -#endif -#define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) -#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) -#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) -#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) -#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) -#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) -static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { - const Py_UNICODE *u_end = u; - while (*u_end++) ; - return (size_t)(u_end - u - 1); -} -#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) -#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode -#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode -#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) -#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); -#define __Pyx_PySequence_Tuple(obj)\ - (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); -#if CYTHON_ASSUME_SAFE_MACROS -#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) -#else -#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) -#endif -#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) -#if PY_MAJOR_VERSION >= 3 -#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) -#else -#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) -#endif -#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII -static int __Pyx_sys_getdefaultencoding_not_ascii; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - PyObject* ascii_chars_u = NULL; - PyObject* ascii_chars_b = NULL; - const char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - if (strcmp(default_encoding_c, "ascii") == 0) { - __Pyx_sys_getdefaultencoding_not_ascii = 0; - } else { - char ascii_chars[128]; - int c; - for (c = 0; c < 128; c++) { - ascii_chars[c] = c; - } - __Pyx_sys_getdefaultencoding_not_ascii = 1; - ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); - if (!ascii_chars_u) goto bad; - ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); - if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { - PyErr_Format( - PyExc_ValueError, - "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", - default_encoding_c); - goto bad; - } - Py_DECREF(ascii_chars_u); - Py_DECREF(ascii_chars_b); - } - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - Py_XDECREF(ascii_chars_u); - Py_XDECREF(ascii_chars_b); - return -1; -} -#endif -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) -#else -#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) -#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -static char* __PYX_DEFAULT_STRING_ENCODING; -static int __Pyx_init_sys_getdefaultencoding_params(void) { - PyObject* sys; - PyObject* default_encoding = NULL; - char* default_encoding_c; - sys = PyImport_ImportModule("sys"); - if (!sys) goto bad; - default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); - Py_DECREF(sys); - if (!default_encoding) goto bad; - default_encoding_c = PyBytes_AsString(default_encoding); - if (!default_encoding_c) goto bad; - __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); - if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; - strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); - Py_DECREF(default_encoding); - return 0; -bad: - Py_XDECREF(default_encoding); - return -1; -} -#endif -#endif - - -/* Test for GCC > 2.95 */ -#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) - #define likely(x) __builtin_expect(!!(x), 1) - #define unlikely(x) __builtin_expect(!!(x), 0) -#else /* !__GNUC__ or GCC < 2.95 */ - #define likely(x) (x) - #define unlikely(x) (x) -#endif /* __GNUC__ */ -static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } - -static PyObject *__pyx_m = NULL; -static PyObject *__pyx_d; -static PyObject *__pyx_b; -static PyObject *__pyx_cython_runtime = NULL; -static PyObject *__pyx_empty_tuple; -static PyObject *__pyx_empty_bytes; -static PyObject *__pyx_empty_unicode; -static int __pyx_lineno; -static int __pyx_clineno = 0; -static const char * __pyx_cfilenm= __FILE__; -static const char *__pyx_filename; - -/* Header.proto */ -#if !defined(CYTHON_CCOMPLEX) - #if defined(__cplusplus) - #define CYTHON_CCOMPLEX 1 - #elif defined(_Complex_I) - #define CYTHON_CCOMPLEX 1 - #else - #define CYTHON_CCOMPLEX 0 - #endif -#endif -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #include - #else - #include - #endif -#endif -#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__) - #undef _Complex_I - #define _Complex_I 1.0fj -#endif - - -static const char *__pyx_f[] = { - "oh2004\\oh2004.pyx", - "__init__.pxd", - "type.pxd", -}; -/* BufferFormatStructs.proto */ -#define IS_UNSIGNED(type) (((type) -1) > 0) -struct __Pyx_StructField_; -#define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) -typedef struct { - const char* name; - struct __Pyx_StructField_* fields; - size_t size; - size_t arraysize[8]; - int ndim; - char typegroup; - char is_unsigned; - int flags; -} __Pyx_TypeInfo; -typedef struct __Pyx_StructField_ { - __Pyx_TypeInfo* type; - const char* name; - size_t offset; -} __Pyx_StructField; -typedef struct { - __Pyx_StructField* field; - size_t parent_offset; -} __Pyx_BufFmt_StackElem; -typedef struct { - __Pyx_StructField root; - __Pyx_BufFmt_StackElem* head; - size_t fmt_offset; - size_t new_count, enc_count; - size_t struct_alignment; - int is_complex; - char enc_type; - char new_packmode; - char enc_packmode; - char is_valid_array; -} __Pyx_BufFmt_Context; - - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":690 - * # in Cython to enable them only on the right systems. - * - * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - */ -typedef npy_int8 __pyx_t_5numpy_int8_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":691 - * - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t - */ -typedef npy_int16 __pyx_t_5numpy_int16_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":692 - * ctypedef npy_int8 int8_t - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< - * ctypedef npy_int64 int64_t - * #ctypedef npy_int96 int96_t - */ -typedef npy_int32 __pyx_t_5numpy_int32_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":693 - * ctypedef npy_int16 int16_t - * ctypedef npy_int32 int32_t - * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< - * #ctypedef npy_int96 int96_t - * #ctypedef npy_int128 int128_t - */ -typedef npy_int64 __pyx_t_5numpy_int64_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":697 - * #ctypedef npy_int128 int128_t - * - * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - */ -typedef npy_uint8 __pyx_t_5numpy_uint8_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":698 - * - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t - */ -typedef npy_uint16 __pyx_t_5numpy_uint16_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":699 - * ctypedef npy_uint8 uint8_t - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< - * ctypedef npy_uint64 uint64_t - * #ctypedef npy_uint96 uint96_t - */ -typedef npy_uint32 __pyx_t_5numpy_uint32_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":700 - * ctypedef npy_uint16 uint16_t - * ctypedef npy_uint32 uint32_t - * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< - * #ctypedef npy_uint96 uint96_t - * #ctypedef npy_uint128 uint128_t - */ -typedef npy_uint64 __pyx_t_5numpy_uint64_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":704 - * #ctypedef npy_uint128 uint128_t - * - * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< - * ctypedef npy_float64 float64_t - * #ctypedef npy_float80 float80_t - */ -typedef npy_float32 __pyx_t_5numpy_float32_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":705 - * - * ctypedef npy_float32 float32_t - * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< - * #ctypedef npy_float80 float80_t - * #ctypedef npy_float128 float128_t - */ -typedef npy_float64 __pyx_t_5numpy_float64_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":714 - * # The int types are mapped a bit surprising -- - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong long_t - * ctypedef npy_longlong longlong_t - */ -typedef npy_long __pyx_t_5numpy_int_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":715 - * # numpy.int corresponds to 'l' and numpy.long to 'q' - * ctypedef npy_long int_t - * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< - * ctypedef npy_longlong longlong_t - * - */ -typedef npy_longlong __pyx_t_5numpy_long_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":716 - * ctypedef npy_long int_t - * ctypedef npy_longlong long_t - * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_ulong uint_t - */ -typedef npy_longlong __pyx_t_5numpy_longlong_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":718 - * ctypedef npy_longlong longlong_t - * - * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulong_t - * ctypedef npy_ulonglong ulonglong_t - */ -typedef npy_ulong __pyx_t_5numpy_uint_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":719 - * - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< - * ctypedef npy_ulonglong ulonglong_t - * - */ -typedef npy_ulonglong __pyx_t_5numpy_ulong_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":720 - * ctypedef npy_ulong uint_t - * ctypedef npy_ulonglong ulong_t - * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< - * - * ctypedef npy_intp intp_t - */ -typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":722 - * ctypedef npy_ulonglong ulonglong_t - * - * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< - * ctypedef npy_uintp uintp_t - * - */ -typedef npy_intp __pyx_t_5numpy_intp_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":723 - * - * ctypedef npy_intp intp_t - * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< - * - * ctypedef npy_double float_t - */ -typedef npy_uintp __pyx_t_5numpy_uintp_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":725 - * ctypedef npy_uintp uintp_t - * - * ctypedef npy_double float_t # <<<<<<<<<<<<<< - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t - */ -typedef npy_double __pyx_t_5numpy_float_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":726 - * - * ctypedef npy_double float_t - * ctypedef npy_double double_t # <<<<<<<<<<<<<< - * ctypedef npy_longdouble longdouble_t - * - */ -typedef npy_double __pyx_t_5numpy_double_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":727 - * ctypedef npy_double float_t - * ctypedef npy_double double_t - * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cfloat cfloat_t - */ -typedef npy_longdouble __pyx_t_5numpy_longdouble_t; -/* Declarations.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - typedef ::std::complex< float > __pyx_t_float_complex; - #else - typedef float _Complex __pyx_t_float_complex; - #endif -#else - typedef struct { float real, imag; } __pyx_t_float_complex; -#endif -static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float); - -/* Declarations.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - typedef ::std::complex< double > __pyx_t_double_complex; - #else - typedef double _Complex __pyx_t_double_complex; - #endif -#else - typedef struct { double real, imag; } __pyx_t_double_complex; -#endif -static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double); - - -/*--- Type declarations ---*/ - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":729 - * ctypedef npy_longdouble longdouble_t - * - * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t - */ -typedef npy_cfloat __pyx_t_5numpy_cfloat_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":730 - * - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< - * ctypedef npy_clongdouble clongdouble_t - * - */ -typedef npy_cdouble __pyx_t_5numpy_cdouble_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":731 - * ctypedef npy_cfloat cfloat_t - * ctypedef npy_cdouble cdouble_t - * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< - * - * ctypedef npy_cdouble complex_t - */ -typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":733 - * ctypedef npy_clongdouble clongdouble_t - * - * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew1(a): - */ -typedef npy_cdouble __pyx_t_5numpy_complex_t; - -/* --- Runtime support code (head) --- */ -/* Refnanny.proto */ -#ifndef CYTHON_REFNANNY - #define CYTHON_REFNANNY 0 -#endif -#if CYTHON_REFNANNY - typedef struct { - void (*INCREF)(void*, PyObject*, int); - void (*DECREF)(void*, PyObject*, int); - void (*GOTREF)(void*, PyObject*, int); - void (*GIVEREF)(void*, PyObject*, int); - void* (*SetupContext)(const char*, int, const char*); - void (*FinishContext)(void**); - } __Pyx_RefNannyAPIStruct; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; - static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); - #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; -#ifdef WITH_THREAD - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - if (acquire_gil) {\ - PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - PyGILState_Release(__pyx_gilstate_save);\ - } else {\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ - } -#else - #define __Pyx_RefNannySetupContext(name, acquire_gil)\ - __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) -#endif - #define __Pyx_RefNannyFinishContext()\ - __Pyx_RefNanny->FinishContext(&__pyx_refnanny) - #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) - #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) - #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) - #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) - #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) -#else - #define __Pyx_RefNannyDeclarations - #define __Pyx_RefNannySetupContext(name, acquire_gil) - #define __Pyx_RefNannyFinishContext() - #define __Pyx_INCREF(r) Py_INCREF(r) - #define __Pyx_DECREF(r) Py_DECREF(r) - #define __Pyx_GOTREF(r) - #define __Pyx_GIVEREF(r) - #define __Pyx_XINCREF(r) Py_XINCREF(r) - #define __Pyx_XDECREF(r) Py_XDECREF(r) - #define __Pyx_XGOTREF(r) - #define __Pyx_XGIVEREF(r) -#endif -#define __Pyx_XDECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_XDECREF(tmp);\ - } while (0) -#define __Pyx_DECREF_SET(r, v) do {\ - PyObject *tmp = (PyObject *) r;\ - r = v; __Pyx_DECREF(tmp);\ - } while (0) -#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) -#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyDictVersioning.proto */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -#define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) -#define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ - (version_var) = __PYX_GET_DICT_VERSION(dict);\ - (cache_var) = (value); -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __pyx_dict_cached_value;\ - } else {\ - (VAR) = __pyx_dict_cached_value = (LOOKUP);\ - __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ - }\ -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); -#else -#define __PYX_GET_DICT_VERSION(dict) (0) -#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) -#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); -#endif - -/* GetModuleGlobalName.proto */ -#if CYTHON_USE_DICT_VERSIONS -#define __Pyx_GetModuleGlobalName(var, name) {\ - static PY_UINT64_T __pyx_dict_version = 0;\ - static PyObject *__pyx_dict_cached_value = NULL;\ - (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ - (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ - __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} -#define __Pyx_GetModuleGlobalNameUncached(var, name) {\ - PY_UINT64_T __pyx_dict_version;\ - PyObject *__pyx_dict_cached_value;\ - (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ -} -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); -#else -#define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) -#define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); -#endif - -/* PyCFunctionFastCall.proto */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); -#else -#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) -#endif - -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); -#else -#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets()\ - ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ - (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) - #define __Pyx_PyFrame_GetLocalsplus(frame)\ - (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) -#endif - -/* PyObjectCall.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); -#else -#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) -#endif - -/* PyObjectCall2Args.proto */ -static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); - -/* PyObjectCallMethO.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); -#endif - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* ExtTypeTest.proto */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); - -/* IsLittleEndian.proto */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); - -/* BufferFormatCheck.proto */ -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); - -/* BufferGetAndValidate.proto */ -#define __Pyx_GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)\ - ((obj == Py_None || obj == NULL) ?\ - (__Pyx_ZeroBuffer(buf), 0) :\ - __Pyx__GetBufferAndValidate(buf, obj, dtype, flags, nd, cast, stack)) -static int __Pyx__GetBufferAndValidate(Py_buffer* buf, PyObject* obj, - __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); -static void __Pyx_ZeroBuffer(Py_buffer* buf); -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static Py_ssize_t __Pyx_minusones[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; -static Py_ssize_t __Pyx_zeros[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -/* BufferIndexError.proto */ -static void __Pyx_RaiseBufferIndexError(int axis); - -#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0) -/* PyIntBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyInt_SubtractCObj(op1, op2, intval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) -#endif - -/* PyFloatBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_SubtractCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyFloat_SubtractCObj(op1, op2, floatval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) -#endif - -/* PyIntCompare.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); - -/* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ - (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ - __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ - (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ - (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* ObjectGetItem.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key); -#else -#define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) -#endif - -/* PyFloatBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace, zerodivision_check)\ - ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2))) - #endif - -/* PyFloatBinop.proto */ -#if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check); -#else -#define __Pyx_PyFloat_AddCObj(op1, op2, floatval, inplace, zerodivision_check)\ - (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) -#endif - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* WriteUnraisableException.proto */ -static void __Pyx_WriteUnraisable(const char *name, int clineno, - int lineno, const char *filename, - int full_traceback, int nogil); - -/* BufferFallbackError.proto */ -static void __Pyx_RaiseBufferFallbackError(void); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* GetTopmostException.proto */ -#if CYTHON_USE_EXC_INFO_STACK -static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); -#endif - -/* SaveResetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -#else -#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) -#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) -#endif - -/* PyErrExceptionMatches.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) -static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); -#else -#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) -#endif - -/* GetException.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); -#endif - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* TypeImport.proto */ -#ifndef __PYX_HAVE_RT_ImportType_proto -#define __PYX_HAVE_RT_ImportType_proto -enum __Pyx_ImportType_CheckSize { - __Pyx_ImportType_CheckSize_Error = 0, - __Pyx_ImportType_CheckSize_Warn = 1, - __Pyx_ImportType_CheckSize_Ignore = 2 -}; -static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); -#endif - -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* CLineInTraceback.proto */ -#ifdef CYTHON_CLINE_IN_TRACEBACK -#define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) -#else -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); -#endif - -/* CodeObjectCache.proto */ -typedef struct { - PyCodeObject* code_object; - int code_line; -} __Pyx_CodeObjectCacheEntry; -struct __Pyx_CodeObjectCache { - int count; - int max_count; - __Pyx_CodeObjectCacheEntry* entries; -}; -static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; -static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); -static PyCodeObject *__pyx_find_code_object(int code_line); -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); - -/* AddTraceback.proto */ -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename); - -/* BufferStructDeclare.proto */ -typedef struct { - Py_ssize_t shape, strides, suboffsets; -} __Pyx_Buf_DimInfo; -typedef struct { - size_t refcount; - Py_buffer pybuffer; -} __Pyx_Buffer; -typedef struct { - __Pyx_Buffer *rcbuffer; - char *data; - __Pyx_Buf_DimInfo diminfo[8]; -} __Pyx_LocalBuf_ND; - -#if PY_MAJOR_VERSION < 3 - static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags); - static void __Pyx_ReleaseBuffer(Py_buffer *view); -#else - #define __Pyx_GetBuffer PyObject_GetBuffer - #define __Pyx_ReleaseBuffer PyBuffer_Release -#endif - - -/* GCCDiagnostics.proto */ -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#define __Pyx_HAS_GCC_DIAGNOSTIC -#endif - -/* RealImag.proto */ -#if CYTHON_CCOMPLEX - #ifdef __cplusplus - #define __Pyx_CREAL(z) ((z).real()) - #define __Pyx_CIMAG(z) ((z).imag()) - #else - #define __Pyx_CREAL(z) (__real__(z)) - #define __Pyx_CIMAG(z) (__imag__(z)) - #endif -#else - #define __Pyx_CREAL(z) ((z).real) - #define __Pyx_CIMAG(z) ((z).imag) -#endif -#if defined(__cplusplus) && CYTHON_CCOMPLEX\ - && (defined(_WIN32) || defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 5 || __GNUC__ == 4 && __GNUC_MINOR__ >= 4 )) || __cplusplus >= 201103) - #define __Pyx_SET_CREAL(z,x) ((z).real(x)) - #define __Pyx_SET_CIMAG(z,y) ((z).imag(y)) -#else - #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x) - #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y) -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX - #define __Pyx_c_eq_float(a, b) ((a)==(b)) - #define __Pyx_c_sum_float(a, b) ((a)+(b)) - #define __Pyx_c_diff_float(a, b) ((a)-(b)) - #define __Pyx_c_prod_float(a, b) ((a)*(b)) - #define __Pyx_c_quot_float(a, b) ((a)/(b)) - #define __Pyx_c_neg_float(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_float(z) ((z)==(float)0) - #define __Pyx_c_conj_float(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_float(z) (::std::abs(z)) - #define __Pyx_c_pow_float(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_float(z) ((z)==0) - #define __Pyx_c_conj_float(z) (conjf(z)) - #if 1 - #define __Pyx_c_abs_float(z) (cabsf(z)) - #define __Pyx_c_pow_float(a, b) (cpowf(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex, __pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex); - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex); - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex, __pyx_t_float_complex); - #endif -#endif - -/* Arithmetic.proto */ -#if CYTHON_CCOMPLEX - #define __Pyx_c_eq_double(a, b) ((a)==(b)) - #define __Pyx_c_sum_double(a, b) ((a)+(b)) - #define __Pyx_c_diff_double(a, b) ((a)-(b)) - #define __Pyx_c_prod_double(a, b) ((a)*(b)) - #define __Pyx_c_quot_double(a, b) ((a)/(b)) - #define __Pyx_c_neg_double(a) (-(a)) - #ifdef __cplusplus - #define __Pyx_c_is_zero_double(z) ((z)==(double)0) - #define __Pyx_c_conj_double(z) (::std::conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (::std::abs(z)) - #define __Pyx_c_pow_double(a, b) (::std::pow(a, b)) - #endif - #else - #define __Pyx_c_is_zero_double(z) ((z)==0) - #define __Pyx_c_conj_double(z) (conj(z)) - #if 1 - #define __Pyx_c_abs_double(z) (cabs(z)) - #define __Pyx_c_pow_double(a, b) (cpow(a, b)) - #endif - #endif -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex, __pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex); - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex); - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex); - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex, __pyx_t_double_complex); - #endif -#endif - -/* CIntFromPy.proto */ -static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); - -/* CIntToPy.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); - -/* CIntFromPy.proto */ -static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); - -/* FastTypeChecks.proto */ -#if CYTHON_COMPILING_IN_CPYTHON -#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); -static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); -#else -#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) -#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) -#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) -#endif -#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) - -/* CheckBinaryVersion.proto */ -static int __Pyx_check_binary_version(void); - -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); - - -/* Module declarations from 'cython' */ - -/* Module declarations from 'cpython.buffer' */ - -/* Module declarations from 'libc.string' */ - -/* Module declarations from 'libc.stdio' */ - -/* Module declarations from '__builtin__' */ - -/* Module declarations from 'cpython.type' */ -static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0; - -/* Module declarations from 'cpython' */ - -/* Module declarations from 'cpython.object' */ - -/* Module declarations from 'cpython.ref' */ - -/* Module declarations from 'cpython.mem' */ - -/* Module declarations from 'numpy' */ - -/* Module declarations from 'numpy' */ -static PyTypeObject *__pyx_ptype_5numpy_dtype = 0; -static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0; -static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0; -static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0; -static PyTypeObject *__pyx_ptype_5numpy_generic = 0; -static PyTypeObject *__pyx_ptype_5numpy_number = 0; -static PyTypeObject *__pyx_ptype_5numpy_integer = 0; -static PyTypeObject *__pyx_ptype_5numpy_signedinteger = 0; -static PyTypeObject *__pyx_ptype_5numpy_unsignedinteger = 0; -static PyTypeObject *__pyx_ptype_5numpy_inexact = 0; -static PyTypeObject *__pyx_ptype_5numpy_floating = 0; -static PyTypeObject *__pyx_ptype_5numpy_complexfloating = 0; -static PyTypeObject *__pyx_ptype_5numpy_flexible = 0; -static PyTypeObject *__pyx_ptype_5numpy_character = 0; -static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0; - -/* Module declarations from 'libc.math' */ - -/* Module declarations from 'oh2004' */ -static PyArrayObject *__pyx_f_6oh2004_inverse_oh2004(double, double, double, double, double, int __pyx_skip_dispatch); /*proto*/ -static double __pyx_f_6oh2004_lamda2freq(double, int __pyx_skip_dispatch); /*proto*/ -static double __pyx_f_6oh2004_freq2lamda(double, int __pyx_skip_dispatch); /*proto*/ -static int __pyx_f_6oh2004_retrieve_oh2004_main(int, PyArrayObject *, PyArrayObject *, PyArrayObject *, PyArrayObject *, PyArrayObject *, PyArrayObject *, PyArrayObject *, PyArrayObject *, double, int __pyx_skip_dispatch); /*proto*/ -static __Pyx_TypeInfo __Pyx_TypeInfo_double = { "double", NULL, sizeof(double), { 0 }, 0, 'R', 0, 0 }; -static __Pyx_TypeInfo __Pyx_TypeInfo_int = { "int", NULL, sizeof(int), { 0 }, 0, IS_UNSIGNED(int) ? 'U' : 'I', IS_UNSIGNED(int), 0 }; -#define __Pyx_MODULE_NAME "oh2004" -extern int __pyx_module_is_main_oh2004; -int __pyx_module_is_main_oh2004 = 0; - -/* Implementation of 'oh2004' */ -static PyObject *__pyx_builtin_ImportError; -static const char __pyx_k_f[] = "f"; -static const char __pyx_k_h[] = "h"; -static const char __pyx_k_n[] = "n"; -static const char __pyx_k_mv[] = "mv"; -static const char __pyx_k_np[] = "np"; -static const char __pyx_k_pi[] = "pi"; -static const char __pyx_k_vh[] = "vh"; -static const char __pyx_k_abs[] = "abs"; -static const char __pyx_k_cos[] = "cos"; -static const char __pyx_k_exp[] = "exp"; -static const char __pyx_k_log[] = "log"; -static const char __pyx_k_max[] = "max"; -static const char __pyx_k_nan[] = "nan"; -static const char __pyx_k_sin[] = "sin"; -static const char __pyx_k_fmin[] = "fmin"; -static const char __pyx_k_freq[] = "freq"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_mask[] = "mask"; -static const char __pyx_k_name[] = "__name__"; -static const char __pyx_k_ones[] = "ones"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_lamda[] = "lamda"; -static const char __pyx_k_numpy[] = "numpy"; -static const char __pyx_k_power[] = "power"; -static const char __pyx_k_shape[] = "shape"; -static const char __pyx_k_theta[] = "theta"; -static const char __pyx_k_where[] = "where"; -static const char __pyx_k_arange[] = "arange"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_nanmin[] = "nanmin"; -static const char __pyx_k_sigma0hhdB[] = "sigma0hhdB"; -static const char __pyx_k_sigma0hvdB[] = "sigma0hvdB"; -static const char __pyx_k_sigma0vvdB[] = "sigma0vvdB"; -static const char __pyx_k_ImportError[] = "ImportError"; -static const char __pyx_k_scipy_optimize[] = "scipy.optimize"; -static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; -static const char __pyx_k_Created_on_Tue_Jun_4_14_59_54_2[] = "\nCreated on Tue Jun 4 14:59:54 2013\n\n@author: Sat Kumar Tomer\n@email: satkumartomer@gmail.com\n@website: www.ambhas.com\n\n"; -static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; -static const char __pyx_k_numpy_core_umath_failed_to_impor[] = "numpy.core.umath failed to import"; -static PyObject *__pyx_n_s_ImportError; -static PyObject *__pyx_n_s_abs; -static PyObject *__pyx_n_s_arange; -static PyObject *__pyx_n_s_cline_in_traceback; -static PyObject *__pyx_n_s_cos; -static PyObject *__pyx_n_s_exp; -static PyObject *__pyx_n_s_f; -static PyObject *__pyx_n_s_fmin; -static PyObject *__pyx_n_s_freq; -static PyObject *__pyx_n_s_h; -static PyObject *__pyx_n_s_import; -static PyObject *__pyx_n_s_lamda; -static PyObject *__pyx_n_s_log; -static PyObject *__pyx_n_s_main; -static PyObject *__pyx_n_s_mask; -static PyObject *__pyx_n_s_max; -static PyObject *__pyx_n_s_mv; -static PyObject *__pyx_n_s_n; -static PyObject *__pyx_n_s_name; -static PyObject *__pyx_n_s_nan; -static PyObject *__pyx_n_s_nanmin; -static PyObject *__pyx_n_s_np; -static PyObject *__pyx_n_s_numpy; -static PyObject *__pyx_kp_s_numpy_core_multiarray_failed_to; -static PyObject *__pyx_kp_s_numpy_core_umath_failed_to_impor; -static PyObject *__pyx_n_s_ones; -static PyObject *__pyx_n_s_pi; -static PyObject *__pyx_n_s_power; -static PyObject *__pyx_n_s_scipy_optimize; -static PyObject *__pyx_n_s_shape; -static PyObject *__pyx_n_s_sigma0hhdB; -static PyObject *__pyx_n_s_sigma0hvdB; -static PyObject *__pyx_n_s_sigma0vvdB; -static PyObject *__pyx_n_s_sin; -static PyObject *__pyx_n_s_test; -static PyObject *__pyx_n_s_theta; -static PyObject *__pyx_n_s_vh; -static PyObject *__pyx_n_s_where; -static PyObject *__pyx_pf_6oh2004_inverse_oh2004(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_sigma0vvdB, double __pyx_v_sigma0hhdB, double __pyx_v_sigma0hvdB, double __pyx_v_theta, double __pyx_v_f); /* proto */ -static PyObject *__pyx_pf_6oh2004_2lamda2freq(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_lamda); /* proto */ -static PyObject *__pyx_pf_6oh2004_4freq2lamda(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_freq); /* proto */ -static PyObject *__pyx_pf_6oh2004_6retrieve_oh2004_main(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_n, PyArrayObject *__pyx_v_mv, PyArrayObject *__pyx_v_h, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_sigma0vvdB, PyArrayObject *__pyx_v_sigma0hhdB, PyArrayObject *__pyx_v_sigma0hvdB, PyArrayObject *__pyx_v_vh, PyArrayObject *__pyx_v_theta, double __pyx_v_f); /* proto */ -static PyObject *__pyx_float_1_; -static PyObject *__pyx_float_0_7; -static PyObject *__pyx_float_0_9; -static PyObject *__pyx_float_1_4; -static PyObject *__pyx_float_10_; -static PyObject *__pyx_float_2_2; -static PyObject *__pyx_float_0_01; -static PyObject *__pyx_float_0_05; -static PyObject *__pyx_float_0_11; -static PyObject *__pyx_float_0_13; -static PyObject *__pyx_float_0_35; -static PyObject *__pyx_float_0_095; -static PyObject *__pyx_float_0_556; -static PyObject *__pyx_float_neg_0_4; -static PyObject *__pyx_float_neg_1_3; -static PyObject *__pyx_float_neg_0_65; -static PyObject *__pyx_int_0; -static PyObject *__pyx_int_1; -static PyObject *__pyx_int_2; -static PyObject *__pyx_tuple_; -static PyObject *__pyx_tuple__2; -static PyObject *__pyx_tuple__3; -/* Late includes */ - -/* "oh2004.pyx":16 - * from scipy.optimize import fmin - * - * cpdef np.ndarray[double,ndim=1] inverse_oh2004(double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f): # <<<<<<<<<<<<<< - * """ - * sigma0vvdB = -14.1 dB - */ - -static PyObject *__pyx_pw_6oh2004_1inverse_oh2004(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyArrayObject *__pyx_f_6oh2004_inverse_oh2004(double __pyx_v_sigma0vvdB, double __pyx_v_sigma0hhdB, double __pyx_v_sigma0hvdB, double __pyx_v_theta, double __pyx_v_f, CYTHON_UNUSED int __pyx_skip_dispatch) { - PyArrayObject *__pyx_v_result = 0; - double __pyx_v_k; - double __pyx_v_theta_rad; - double __pyx_v_sigma_0_vv; - double __pyx_v_sigma_0_hh; - double __pyx_v_sigma_0_hv; - double __pyx_v_p; - double __pyx_v_q; - PyArrayObject *__pyx_v_mv0 = 0; - PyArrayObject *__pyx_v_ks = 0; - PyArrayObject *__pyx_v_err = 0; - PyArrayObject *__pyx_v_abs_err = 0; - double __pyx_v_min_err; - double __pyx_v_mv1; - double __pyx_v_temp_ks1; - double __pyx_v_ks1; - double __pyx_v_s1; - double __pyx_v_ks2; - double __pyx_v_s2; - double __pyx_v_mv2; - double __pyx_v_yy; - double __pyx_v_xx; - double __pyx_v_mv3; - double __pyx_v_sf; - double __pyx_v_mvf; - __Pyx_LocalBuf_ND __pyx_pybuffernd_abs_err; - __Pyx_Buffer __pyx_pybuffer_abs_err; - __Pyx_LocalBuf_ND __pyx_pybuffernd_err; - __Pyx_Buffer __pyx_pybuffer_err; - __Pyx_LocalBuf_ND __pyx_pybuffernd_ks; - __Pyx_Buffer __pyx_pybuffer_ks; - __Pyx_LocalBuf_ND __pyx_pybuffernd_mv0; - __Pyx_Buffer __pyx_pybuffer_mv0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_result; - __Pyx_Buffer __pyx_pybuffer_result; - PyArrayObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - PyArrayObject *__pyx_t_4 = NULL; - double __pyx_t_5; - Py_ssize_t __pyx_t_6; - int __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - PyObject *__pyx_t_9 = NULL; - int __pyx_t_10; - PyArrayObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - PyObject *__pyx_t_13 = NULL; - PyObject *__pyx_t_14 = NULL; - PyObject *__pyx_t_15 = NULL; - PyArrayObject *__pyx_t_16 = NULL; - PyArrayObject *__pyx_t_17 = NULL; - PyArrayObject *__pyx_t_18 = NULL; - int __pyx_t_19; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("inverse_oh2004", 0); - __pyx_pybuffer_result.pybuffer.buf = NULL; - __pyx_pybuffer_result.refcount = 0; - __pyx_pybuffernd_result.data = NULL; - __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; - __pyx_pybuffer_mv0.pybuffer.buf = NULL; - __pyx_pybuffer_mv0.refcount = 0; - __pyx_pybuffernd_mv0.data = NULL; - __pyx_pybuffernd_mv0.rcbuffer = &__pyx_pybuffer_mv0; - __pyx_pybuffer_ks.pybuffer.buf = NULL; - __pyx_pybuffer_ks.refcount = 0; - __pyx_pybuffernd_ks.data = NULL; - __pyx_pybuffernd_ks.rcbuffer = &__pyx_pybuffer_ks; - __pyx_pybuffer_err.pybuffer.buf = NULL; - __pyx_pybuffer_err.refcount = 0; - __pyx_pybuffernd_err.data = NULL; - __pyx_pybuffernd_err.rcbuffer = &__pyx_pybuffer_err; - __pyx_pybuffer_abs_err.pybuffer.buf = NULL; - __pyx_pybuffer_abs_err.refcount = 0; - __pyx_pybuffernd_abs_err.data = NULL; - __pyx_pybuffernd_abs_err.rcbuffer = &__pyx_pybuffer_abs_err; - - /* "oh2004.pyx":25 - * """ - * #print("--------------------------------------------------------\n") - * cdef np.ndarray[double,ndim=1] result=np.ones((2)) # <<<<<<<<<<<<<< - * result[0]=np.nan - * result[1]=np.nan - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_int_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_2); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 25, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 25, __pyx_L1_error) - __pyx_t_4 = ((PyArrayObject *)__pyx_t_1); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_4, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) { - __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_result.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 25, __pyx_L1_error) - } else {__pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_4 = 0; - __pyx_v_result = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "oh2004.pyx":26 - * #print("--------------------------------------------------------\n") - * cdef np.ndarray[double,ndim=1] result=np.ones((2)) - * result[0]=np.nan # <<<<<<<<<<<<<< - * result[1]=np.nan - * #print("*************nan****************") - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_nan); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 26, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_6 = 0; - __pyx_t_7 = -1; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 26, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_t_5; - - /* "oh2004.pyx":27 - * cdef np.ndarray[double,ndim=1] result=np.ones((2)) - * result[0]=np.nan - * result[1]=np.nan # <<<<<<<<<<<<<< - * #print("*************nan****************") - * #print(sigma0vvdB,sigma0hhdB,sigma0hvdB,theta,f) - */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_nan); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 27, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_6 = 1; - __pyx_t_7 = -1; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 27, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_result.diminfo[0].strides) = __pyx_t_5; - - /* "oh2004.pyx":30 - * #print("*************nan****************") - * #print(sigma0vvdB,sigma0hhdB,sigma0hvdB,theta,f) - * cdef double k = 2*3.1415926*f/0.299792458; #calculate the wave number # <<<<<<<<<<<<<< - * cdef double theta_rad = theta*3.1415926/180; #represent angle in radians - * - */ - __pyx_v_k = (((2.0 * 3.1415926) * __pyx_v_f) / 0.299792458); - - /* "oh2004.pyx":31 - * #print(sigma0vvdB,sigma0hhdB,sigma0hvdB,theta,f) - * cdef double k = 2*3.1415926*f/0.299792458; #calculate the wave number - * cdef double theta_rad = theta*3.1415926/180; #represent angle in radians # <<<<<<<<<<<<<< - * - * cdef double sigma_0_vv = np.power(10.,(sigma0vvdB/10.)) #%represent data in linear scale - */ - __pyx_v_theta_rad = ((__pyx_v_theta * 3.1415926) / 180.0); - - /* "oh2004.pyx":33 - * cdef double theta_rad = theta*3.1415926/180; #represent angle in radians - * - * cdef double sigma_0_vv = np.power(10.,(sigma0vvdB/10.)) #%represent data in linear scale # <<<<<<<<<<<<<< - * cdef double sigma_0_hh = np.power(10.,(sigma0hhdB/10.)) - * cdef double sigma_0_hv = np.power(10.,(sigma0hvdB/10.)) - */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_power); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble((__pyx_v_sigma0vvdB / 10.)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_float_10_, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { - PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_float_10_, __pyx_t_3}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } else - #endif - { - __pyx_t_9 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - if (__pyx_t_8) { - __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; - } - __Pyx_INCREF(__pyx_float_10_); - __Pyx_GIVEREF(__pyx_float_10_); - PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_float_10_); - __Pyx_GIVEREF(__pyx_t_3); - PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_t_3); - __pyx_t_3 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 33, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_sigma_0_vv = __pyx_t_5; - - /* "oh2004.pyx":34 - * - * cdef double sigma_0_vv = np.power(10.,(sigma0vvdB/10.)) #%represent data in linear scale - * cdef double sigma_0_hh = np.power(10.,(sigma0hhdB/10.)) # <<<<<<<<<<<<<< - * cdef double sigma_0_hv = np.power(10.,(sigma0hvdB/10.)) - * - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_power); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble((__pyx_v_sigma0hhdB / 10.)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_3)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_3); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_float_10_, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { - PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_float_10_, __pyx_t_2}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - } else - #endif - { - __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - if (__pyx_t_3) { - __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; - } - __Pyx_INCREF(__pyx_float_10_); - __Pyx_GIVEREF(__pyx_float_10_); - PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_float_10_); - __Pyx_GIVEREF(__pyx_t_2); - PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_2); - __pyx_t_2 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 34, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_sigma_0_hh = __pyx_t_5; - - /* "oh2004.pyx":35 - * cdef double sigma_0_vv = np.power(10.,(sigma0vvdB/10.)) #%represent data in linear scale - * cdef double sigma_0_hh = np.power(10.,(sigma0hhdB/10.)) - * cdef double sigma_0_hv = np.power(10.,(sigma0hvdB/10.)) # <<<<<<<<<<<<<< - * - * if sigma_0_vv==0: - */ - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_power); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyFloat_FromDouble((__pyx_v_sigma0hvdB / 10.)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_2 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_float_10_, __pyx_t_9}; - __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_float_10_, __pyx_t_9}; - __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - } else - #endif - { - __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_2) { - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; - } - __Pyx_INCREF(__pyx_float_10_); - __Pyx_GIVEREF(__pyx_float_10_); - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_float_10_); - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_9); - __pyx_t_9 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 35, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_sigma_0_hv = __pyx_t_5; - - /* "oh2004.pyx":37 - * cdef double sigma_0_hv = np.power(10.,(sigma0hvdB/10.)) - * - * if sigma_0_vv==0: # <<<<<<<<<<<<<< - * #print("***********sigma_0_vv==0*************") - * return result - */ - __pyx_t_10 = ((__pyx_v_sigma_0_vv == 0.0) != 0); - if (__pyx_t_10) { - - /* "oh2004.pyx":39 - * if sigma_0_vv==0: - * #print("***********sigma_0_vv==0*************") - * return result # <<<<<<<<<<<<<< - * cdef double p = sigma_0_hh / sigma_0_vv; #calculate the p-ratio - * cdef double q = sigma_0_hv / sigma_0_vv; #calculate the q-ratio - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyArrayObject *)__pyx_v_result); - goto __pyx_L0; - - /* "oh2004.pyx":37 - * cdef double sigma_0_hv = np.power(10.,(sigma0hvdB/10.)) - * - * if sigma_0_vv==0: # <<<<<<<<<<<<<< - * #print("***********sigma_0_vv==0*************") - * return result - */ - } - - /* "oh2004.pyx":40 - * #print("***********sigma_0_vv==0*************") - * return result - * cdef double p = sigma_0_hh / sigma_0_vv; #calculate the p-ratio # <<<<<<<<<<<<<< - * cdef double q = sigma_0_hv / sigma_0_vv; #calculate the q-ratio - * - */ - if (unlikely(__pyx_v_sigma_0_vv == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 40, __pyx_L1_error) - } - __pyx_v_p = (__pyx_v_sigma_0_hh / __pyx_v_sigma_0_vv); - - /* "oh2004.pyx":41 - * return result - * cdef double p = sigma_0_hh / sigma_0_vv; #calculate the p-ratio - * cdef double q = sigma_0_hv / sigma_0_vv; #calculate the q-ratio # <<<<<<<<<<<<<< - * - * - */ - if (unlikely(__pyx_v_sigma_0_vv == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 41, __pyx_L1_error) - } - __pyx_v_q = (__pyx_v_sigma_0_hv / __pyx_v_sigma_0_vv); - - /* "oh2004.pyx":44 - * - * - * cdef np.ndarray[double,ndim=1] mv0 = np.arange(0.05,0.9,0.01) # set Gamma0 range of values (fine increments) # <<<<<<<<<<<<<< - * - * ## First estimates s1 and mv1 - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_arange); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 44, __pyx_L1_error) - __pyx_t_11 = ((PyArrayObject *)__pyx_t_1); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mv0.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_mv0 = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_mv0.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 44, __pyx_L1_error) - } else {__pyx_pybuffernd_mv0.diminfo[0].strides = __pyx_pybuffernd_mv0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mv0.diminfo[0].shape = __pyx_pybuffernd_mv0.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_11 = 0; - __pyx_v_mv0 = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "oh2004.pyx":47 - * - * ## First estimates s1 and mv1 - * cdef np.ndarray[double,ndim=1] ks = ((-1.)*3.125*np.log(1 - sigma_0_hv/(0.11 * mv0**0.7 * (np.cos(theta_rad))**2.2)))**0.556 # <<<<<<<<<<<<<< - * cdef np.ndarray[double,ndim=1] err = (1. - (2.*theta_rad/np.pi)**(0.35*mv0**(-0.65)) * np.exp(-0.4 * ks**1.4))-p - * cdef np.ndarray[double,ndim=1] abs_err = np.abs(err); - */ - __pyx_t_1 = PyFloat_FromDouble((-1. * 3.125)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_sigma_0_hv); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = PyNumber_Power(((PyObject *)__pyx_v_mv0), __pyx_float_0_7, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = PyNumber_Multiply(__pyx_float_0_11, __pyx_t_2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_12); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_cos); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - __pyx_t_13 = PyFloat_FromDouble(__pyx_v_theta_rad); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_13); - __pyx_t_15 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { - __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_14); - if (likely(__pyx_t_15)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); - __Pyx_INCREF(__pyx_t_15); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_14, function); - } - } - __pyx_t_2 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_15, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_13); - __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; - __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyNumber_Power(__pyx_t_2, __pyx_float_2_2, Py_None); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Multiply(__pyx_t_12, __pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyInt_SubtractCObj(__pyx_int_1, __pyx_t_14, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - __pyx_t_8 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_14, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Multiply(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyNumber_Power(__pyx_t_9, __pyx_float_0_556, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 47, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 47, __pyx_L1_error) - __pyx_t_16 = ((PyArrayObject *)__pyx_t_8); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ks.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_ks = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_ks.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 47, __pyx_L1_error) - } else {__pyx_pybuffernd_ks.diminfo[0].strides = __pyx_pybuffernd_ks.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ks.diminfo[0].shape = __pyx_pybuffernd_ks.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_16 = 0; - __pyx_v_ks = ((PyArrayObject *)__pyx_t_8); - __pyx_t_8 = 0; - - /* "oh2004.pyx":48 - * ## First estimates s1 and mv1 - * cdef np.ndarray[double,ndim=1] ks = ((-1.)*3.125*np.log(1 - sigma_0_hv/(0.11 * mv0**0.7 * (np.cos(theta_rad))**2.2)))**0.556 - * cdef np.ndarray[double,ndim=1] err = (1. - (2.*theta_rad/np.pi)**(0.35*mv0**(-0.65)) * np.exp(-0.4 * ks**1.4))-p # <<<<<<<<<<<<<< - * cdef np.ndarray[double,ndim=1] abs_err = np.abs(err); - * cdef double min_err = np.nanmin(abs_err); #find the value of minimum error - */ - __pyx_t_8 = PyFloat_FromDouble((2. * __pyx_v_theta_rad)); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_pi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Power(((PyObject *)__pyx_v_mv0), __pyx_float_neg_0_65, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = PyNumber_Multiply(__pyx_float_0_35, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Power(__pyx_t_9, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Power(((PyObject *)__pyx_v_ks), __pyx_float_1_4, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_14 = PyNumber_Multiply(__pyx_float_neg_0_4, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_9, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_14); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_2, 1., 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_1 = PyNumber_Subtract(__pyx_t_8, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 48, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 48, __pyx_L1_error) - __pyx_t_17 = ((PyArrayObject *)__pyx_t_1); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_err.rcbuffer->pybuffer, (PyObject*)__pyx_t_17, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_err = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_err.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 48, __pyx_L1_error) - } else {__pyx_pybuffernd_err.diminfo[0].strides = __pyx_pybuffernd_err.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_err.diminfo[0].shape = __pyx_pybuffernd_err.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_17 = 0; - __pyx_v_err = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "oh2004.pyx":49 - * cdef np.ndarray[double,ndim=1] ks = ((-1.)*3.125*np.log(1 - sigma_0_hv/(0.11 * mv0**0.7 * (np.cos(theta_rad))**2.2)))**0.556 - * cdef np.ndarray[double,ndim=1] err = (1. - (2.*theta_rad/np.pi)**(0.35*mv0**(-0.65)) * np.exp(-0.4 * ks**1.4))-p - * cdef np.ndarray[double,ndim=1] abs_err = np.abs(err); # <<<<<<<<<<<<<< - * cdef double min_err = np.nanmin(abs_err); #find the value of minimum error - * #print(np.where(abs_err == min_err)[0].shape) - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_abs); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, ((PyObject *)__pyx_v_err)) : __Pyx_PyObject_CallOneArg(__pyx_t_8, ((PyObject *)__pyx_v_err)); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 49, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 49, __pyx_L1_error) - __pyx_t_18 = ((PyArrayObject *)__pyx_t_1); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_abs_err.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - __pyx_v_abs_err = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_abs_err.rcbuffer->pybuffer.buf = NULL; - __PYX_ERR(0, 49, __pyx_L1_error) - } else {__pyx_pybuffernd_abs_err.diminfo[0].strides = __pyx_pybuffernd_abs_err.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_abs_err.diminfo[0].shape = __pyx_pybuffernd_abs_err.rcbuffer->pybuffer.shape[0]; - } - } - __pyx_t_18 = 0; - __pyx_v_abs_err = ((PyArrayObject *)__pyx_t_1); - __pyx_t_1 = 0; - - /* "oh2004.pyx":50 - * cdef np.ndarray[double,ndim=1] err = (1. - (2.*theta_rad/np.pi)**(0.35*mv0**(-0.65)) * np.exp(-0.4 * ks**1.4))-p - * cdef np.ndarray[double,ndim=1] abs_err = np.abs(err); - * cdef double min_err = np.nanmin(abs_err); #find the value of minimum error # <<<<<<<<<<<<<< - * #print(np.where(abs_err == min_err)[0].shape) - * if min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0 : - */ - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_nanmin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_2, function); - } - } - __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, ((PyObject *)__pyx_v_abs_err)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_abs_err)); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 50, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_v_min_err = __pyx_t_5; - - /* "oh2004.pyx":52 - * cdef double min_err = np.nanmin(abs_err); #find the value of minimum error - * #print(np.where(abs_err == min_err)[0].shape) - * if min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0 : # <<<<<<<<<<<<<< - * #print("***************min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0") - * return result - */ - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_min_err); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_nan); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_8, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (!__pyx_t_19) { - } else { - __pyx_t_10 = __pyx_t_19; - goto __pyx_L5_bool_binop_done; - } - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_max); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_where); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyFloat_FromDouble(__pyx_v_min_err); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_abs_err), __pyx_t_14, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - __pyx_t_8 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_14, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_shape); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_2, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_19 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 52, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_10 = __pyx_t_19; - __pyx_L5_bool_binop_done:; - if (__pyx_t_10) { - - /* "oh2004.pyx":54 - * if min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0 : - * #print("***************min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0") - * return result # <<<<<<<<<<<<<< - * cdef double mv1 = mv0[np.where(abs_err == min_err)[0][0]] - * cdef double temp_ks1=1. - sigma_0_hv/(0.11 * mv1**0.7 * (np.cos(theta_rad))**2.2) - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyArrayObject *)__pyx_v_result); - goto __pyx_L0; - - /* "oh2004.pyx":52 - * cdef double min_err = np.nanmin(abs_err); #find the value of minimum error - * #print(np.where(abs_err == min_err)[0].shape) - * if min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0 : # <<<<<<<<<<<<<< - * #print("***************min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0") - * return result - */ - } - - /* "oh2004.pyx":55 - * #print("***************min_err==np.nan or np.max(np.where(abs_err == min_err)[0].shape)==0") - * return result - * cdef double mv1 = mv0[np.where(abs_err == min_err)[0][0]] # <<<<<<<<<<<<<< - * cdef double temp_ks1=1. - sigma_0_hv/(0.11 * mv1**0.7 * (np.cos(theta_rad))**2.2) - * if temp_ks1<0: - */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_min_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_9 = PyObject_RichCompare(((PyObject *)__pyx_v_abs_err), __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_2, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_1, 0, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_8, 0, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_mv0), __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_mv1 = __pyx_t_5; - - /* "oh2004.pyx":56 - * return result - * cdef double mv1 = mv0[np.where(abs_err == min_err)[0][0]] - * cdef double temp_ks1=1. - sigma_0_hv/(0.11 * mv1**0.7 * (np.cos(theta_rad))**2.2) # <<<<<<<<<<<<<< - * if temp_ks1<0: - * #print("*********************temp_ks1<0") - */ - __pyx_t_8 = PyFloat_FromDouble(__pyx_v_sigma_0_hv); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = PyFloat_FromDouble((0.11 * pow(__pyx_v_mv1, 0.7))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cos); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble(__pyx_v_theta_rad); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_14 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_14)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_14); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - __pyx_t_9 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_14, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); - __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Power(__pyx_t_9, __pyx_float_2_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 56, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_v_temp_ks1 = __pyx_t_5; - - /* "oh2004.pyx":57 - * cdef double mv1 = mv0[np.where(abs_err == min_err)[0][0]] - * cdef double temp_ks1=1. - sigma_0_hv/(0.11 * mv1**0.7 * (np.cos(theta_rad))**2.2) - * if temp_ks1<0: # <<<<<<<<<<<<<< - * #print("*********************temp_ks1<0") - * return result - */ - __pyx_t_10 = ((__pyx_v_temp_ks1 < 0.0) != 0); - if (__pyx_t_10) { - - /* "oh2004.pyx":59 - * if temp_ks1<0: - * #print("*********************temp_ks1<0") - * return result # <<<<<<<<<<<<<< - * cdef double ks1 = ((-1)*3.125*np.log(temp_ks1))**0.556 - * cdef double s1 = ks1/k - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyArrayObject *)__pyx_v_result); - goto __pyx_L0; - - /* "oh2004.pyx":57 - * cdef double mv1 = mv0[np.where(abs_err == min_err)[0][0]] - * cdef double temp_ks1=1. - sigma_0_hv/(0.11 * mv1**0.7 * (np.cos(theta_rad))**2.2) - * if temp_ks1<0: # <<<<<<<<<<<<<< - * #print("*********************temp_ks1<0") - * return result - */ - } - - /* "oh2004.pyx":60 - * #print("*********************temp_ks1<0") - * return result - * cdef double ks1 = ((-1)*3.125*np.log(temp_ks1))**0.556 # <<<<<<<<<<<<<< - * cdef double s1 = ks1/k - * - */ - __pyx_t_9 = PyFloat_FromDouble((-1.0 * 3.125)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyFloat_FromDouble(__pyx_v_temp_ks1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Multiply(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Power(__pyx_t_1, __pyx_float_0_556, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 60, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_v_ks1 = __pyx_t_5; - - /* "oh2004.pyx":61 - * return result - * cdef double ks1 = ((-1)*3.125*np.log(temp_ks1))**0.556 - * cdef double s1 = ks1/k # <<<<<<<<<<<<<< - * - * ## Second estimate s2 and mv2 - */ - if (unlikely(__pyx_v_k == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 61, __pyx_L1_error) - } - __pyx_v_s1 = (__pyx_v_ks1 / __pyx_v_k); - - /* "oh2004.pyx":64 - * - * ## Second estimate s2 and mv2 - * cdef double ks2 = (np.log(1-(q/(0.095 * (0.13 + np.sin(1.5*theta_rad))**1.4))) /(-1.3))**(10./9.) # <<<<<<<<<<<<<< - * cdef double s2 = ks2/k - * cdef double mv2 =0. - */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_log); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyFloat_FromDouble(__pyx_v_q); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sin); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = PyFloat_FromDouble((1.5 * __pyx_v_theta_rad)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_12 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { - __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_14); - if (likely(__pyx_t_12)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); - __Pyx_INCREF(__pyx_t_12); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_14, function); - } - } - __pyx_t_8 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_12, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_2); - __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyFloat_AddCObj(__pyx_float_0_13, __pyx_t_8, 0.13, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = PyNumber_Power(__pyx_t_14, __pyx_float_1_4, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyNumber_Multiply(__pyx_float_0_095, __pyx_t_8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyInt_SubtractCObj(__pyx_int_1, __pyx_t_8, 1, 0, 0); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_8)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_14); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = __Pyx_PyFloat_DivideObjC(__pyx_t_3, __pyx_float_neg_1_3, -1.3, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble((10. / 9.)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_14 = PyNumber_Power(__pyx_t_9, __pyx_t_3, Py_None); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 64, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_v_ks2 = __pyx_t_5; - - /* "oh2004.pyx":65 - * ## Second estimate s2 and mv2 - * cdef double ks2 = (np.log(1-(q/(0.095 * (0.13 + np.sin(1.5*theta_rad))**1.4))) /(-1.3))**(10./9.) - * cdef double s2 = ks2/k # <<<<<<<<<<<<<< - * cdef double mv2 =0. - * cdef double yy =0. - */ - if (unlikely(__pyx_v_k == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 65, __pyx_L1_error) - } - __pyx_v_s2 = (__pyx_v_ks2 / __pyx_v_k); - - /* "oh2004.pyx":66 - * cdef double ks2 = (np.log(1-(q/(0.095 * (0.13 + np.sin(1.5*theta_rad))**1.4))) /(-1.3))**(10./9.) - * cdef double s2 = ks2/k - * cdef double mv2 =0. # <<<<<<<<<<<<<< - * cdef double yy =0. - * cdef double xx = (1-p)/np.exp(-0.4 * ks2**1.4) - */ - __pyx_v_mv2 = 0.; - - /* "oh2004.pyx":67 - * cdef double s2 = ks2/k - * cdef double mv2 =0. - * cdef double yy =0. # <<<<<<<<<<<<<< - * cdef double xx = (1-p)/np.exp(-0.4 * ks2**1.4) - * if xx<=0: - */ - __pyx_v_yy = 0.; - - /* "oh2004.pyx":68 - * cdef double mv2 =0. - * cdef double yy =0. - * cdef double xx = (1-p)/np.exp(-0.4 * ks2**1.4) # <<<<<<<<<<<<<< - * if xx<=0: - * mv2 =0. - */ - __pyx_t_14 = PyFloat_FromDouble((1.0 - __pyx_v_p)); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyFloat_FromDouble((-0.4 * pow(__pyx_v_ks2, 1.4))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_1)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - } - } - __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_1, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_9); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_14, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 68, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_xx = __pyx_t_5; - - /* "oh2004.pyx":69 - * cdef double yy =0. - * cdef double xx = (1-p)/np.exp(-0.4 * ks2**1.4) - * if xx<=0: # <<<<<<<<<<<<<< - * mv2 =0. - * else: - */ - __pyx_t_10 = ((__pyx_v_xx <= 0.0) != 0); - if (__pyx_t_10) { - - /* "oh2004.pyx":70 - * cdef double xx = (1-p)/np.exp(-0.4 * ks2**1.4) - * if xx<=0: - * mv2 =0. # <<<<<<<<<<<<<< - * else: - * yy = np.log(xx)/(0.35*np.log(2*theta_rad/np.pi)) - */ - __pyx_v_mv2 = 0.; - - /* "oh2004.pyx":69 - * cdef double yy =0. - * cdef double xx = (1-p)/np.exp(-0.4 * ks2**1.4) - * if xx<=0: # <<<<<<<<<<<<<< - * mv2 =0. - * else: - */ - goto __pyx_L8; - } - - /* "oh2004.pyx":72 - * mv2 =0. - * else: - * yy = np.log(xx)/(0.35*np.log(2*theta_rad/np.pi)) # <<<<<<<<<<<<<< - * mv2=np.power(yy,-100.0/65) - * - */ - /*else*/ { - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_xx); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_14))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_14); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_14, function); - } - } - __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_14, __pyx_t_9, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble((2.0 * __pyx_v_theta_rad)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_pi); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_9, function); - } - } - __pyx_t_14 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyNumber_Multiply(__pyx_float_0_35, __pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_v_yy = __pyx_t_5; - - /* "oh2004.pyx":73 - * else: - * yy = np.log(xx)/(0.35*np.log(2*theta_rad/np.pi)) - * mv2=np.power(yy,-100.0/65) # <<<<<<<<<<<<<< - * - * ## Third estimate mv3 - */ - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_power); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __pyx_t_9 = PyFloat_FromDouble(__pyx_v_yy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_1 = PyFloat_FromDouble((-100.0 / 65.0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = NULL; - __pyx_t_7 = 0; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_8); - if (likely(__pyx_t_2)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_2); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_8, function); - __pyx_t_7 = 1; - } - } - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_9, __pyx_t_1}; - __pyx_t_14 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { - PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_9, __pyx_t_1}; - __pyx_t_14 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - } else - #endif - { - __pyx_t_3 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - if (__pyx_t_2) { - __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; - } - __Pyx_GIVEREF(__pyx_t_9); - PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_7, __pyx_t_9); - __Pyx_GIVEREF(__pyx_t_1); - PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_7, __pyx_t_1); - __pyx_t_9 = 0; - __pyx_t_1 = 0; - __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_14); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 73, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_v_mv2 = __pyx_t_5; - } - __pyx_L8:; - - /* "oh2004.pyx":76 - * - * ## Third estimate mv3 - * cdef double mv3 = ((sigma_0_hv/(1 - np.exp(-0.32 * ks2**1.8)))/(0.11 * np.cos(theta_rad)**2.2))**(1/0.7) # <<<<<<<<<<<<<< - * ## weighted average s and mv------------------------------------- - * #print("q:\t",q) - */ - __pyx_t_14 = PyFloat_FromDouble(__pyx_v_sigma_0_hv); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyFloat_FromDouble((-0.32 * pow(__pyx_v_ks2, 1.8))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_1, function); - } - } - __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyInt_SubtractCObj(__pyx_int_1, __pyx_t_8, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_14, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_cos); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - __pyx_t_14 = PyFloat_FromDouble(__pyx_v_theta_rad); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_14); - __pyx_t_9 = NULL; - if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { - __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3); - if (likely(__pyx_t_9)) { - PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); - __Pyx_INCREF(__pyx_t_9); - __Pyx_INCREF(function); - __Pyx_DECREF_SET(__pyx_t_3, function); - } - } - __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_9, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_14); - __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = PyNumber_Power(__pyx_t_1, __pyx_float_2_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyNumber_Multiply(__pyx_float_0_11, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyFloat_FromDouble((1.0 / 0.7)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = PyNumber_Power(__pyx_t_3, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_t_8); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 76, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __pyx_v_mv3 = __pyx_t_5; - - /* "oh2004.pyx":84 - * #print("theta_rad:\t",theta_rad) - * - * cdef double sf = (s1 + 0.25*s2)/(1+0.25) # <<<<<<<<<<<<<< - * cdef double mvf = (mv1+mv2+mv3)/3 - * - */ - __pyx_v_sf = ((__pyx_v_s1 + (0.25 * __pyx_v_s2)) / (1.0 + 0.25)); - - /* "oh2004.pyx":85 - * - * cdef double sf = (s1 + 0.25*s2)/(1+0.25) - * cdef double mvf = (mv1+mv2+mv3)/3 # <<<<<<<<<<<<<< - * - * result[0]=mvf*1.0 - */ - __pyx_v_mvf = (((__pyx_v_mv1 + __pyx_v_mv2) + __pyx_v_mv3) / 3.0); - - /* "oh2004.pyx":87 - * cdef double mvf = (mv1+mv2+mv3)/3 - * - * result[0]=mvf*1.0 # <<<<<<<<<<<<<< - * result[1]=sf*1.0 - * #print("mv1:\t",mv1) - */ - __pyx_t_6 = 0; - __pyx_t_7 = -1; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 87, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_result.diminfo[0].strides) = (__pyx_v_mvf * 1.0); - - /* "oh2004.pyx":88 - * - * result[0]=mvf*1.0 - * result[1]=sf*1.0 # <<<<<<<<<<<<<< - * #print("mv1:\t",mv1) - * #print("mv2:\t",mv2) - */ - __pyx_t_6 = 1; - __pyx_t_7 = -1; - if (__pyx_t_6 < 0) { - __pyx_t_6 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_6 < 0)) __pyx_t_7 = 0; - } else if (unlikely(__pyx_t_6 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_7 = 0; - if (unlikely(__pyx_t_7 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_7); - __PYX_ERR(0, 88, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_6, __pyx_pybuffernd_result.diminfo[0].strides) = (__pyx_v_sf * 1.0); - - /* "oh2004.pyx":97 - * #print("Estimated rms height s (m): ",result[1]) - * #print("\nend\n") - * return result # <<<<<<<<<<<<<< - * - * cpdef double lamda2freq(double lamda): - */ - __Pyx_XDECREF(((PyObject *)__pyx_r)); - __Pyx_INCREF(((PyObject *)__pyx_v_result)); - __pyx_r = ((PyArrayObject *)__pyx_v_result); - goto __pyx_L0; - - /* "oh2004.pyx":16 - * from scipy.optimize import fmin - * - * cpdef np.ndarray[double,ndim=1] inverse_oh2004(double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f): # <<<<<<<<<<<<<< - * """ - * sigma0vvdB = -14.1 dB - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - __Pyx_XDECREF(__pyx_t_3); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_12); - __Pyx_XDECREF(__pyx_t_13); - __Pyx_XDECREF(__pyx_t_14); - __Pyx_XDECREF(__pyx_t_15); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_abs_err.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_err.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ks.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mv0.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("oh2004.inverse_oh2004", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_abs_err.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_err.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ks.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mv0.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_XDECREF((PyObject *)__pyx_v_mv0); - __Pyx_XDECREF((PyObject *)__pyx_v_ks); - __Pyx_XDECREF((PyObject *)__pyx_v_err); - __Pyx_XDECREF((PyObject *)__pyx_v_abs_err); - __Pyx_XGIVEREF((PyObject *)__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6oh2004_1inverse_oh2004(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static char __pyx_doc_6oh2004_inverse_oh2004[] = "\n sigma0vvdB = -14.1 dB\n sigma0hhdB = -16.0\n sigma0hvdB = -26.5\n theta = 35. \350\247\222\345\272\246\345\200\274 ##Incidence angle\n f = 5.0 ##GHz\n "; -static PyObject *__pyx_pw_6oh2004_1inverse_oh2004(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - double __pyx_v_sigma0vvdB; - double __pyx_v_sigma0hhdB; - double __pyx_v_sigma0hvdB; - double __pyx_v_theta; - double __pyx_v_f; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("inverse_oh2004 (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sigma0vvdB,&__pyx_n_s_sigma0hhdB,&__pyx_n_s_sigma0hvdB,&__pyx_n_s_theta,&__pyx_n_s_f,0}; - PyObject* values[5] = {0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma0vvdB)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma0hhdB)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("inverse_oh2004", 1, 5, 5, 1); __PYX_ERR(0, 16, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma0hvdB)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("inverse_oh2004", 1, 5, 5, 2); __PYX_ERR(0, 16, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("inverse_oh2004", 1, 5, 5, 3); __PYX_ERR(0, 16, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("inverse_oh2004", 1, 5, 5, 4); __PYX_ERR(0, 16, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "inverse_oh2004") < 0)) __PYX_ERR(0, 16, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - } - __pyx_v_sigma0vvdB = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_sigma0vvdB == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) - __pyx_v_sigma0hhdB = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_sigma0hhdB == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) - __pyx_v_sigma0hvdB = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_sigma0hvdB == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) - __pyx_v_theta = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_theta == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) - __pyx_v_f = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_f == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 16, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("inverse_oh2004", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 16, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("oh2004.inverse_oh2004", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6oh2004_inverse_oh2004(__pyx_self, __pyx_v_sigma0vvdB, __pyx_v_sigma0hhdB, __pyx_v_sigma0hvdB, __pyx_v_theta, __pyx_v_f); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6oh2004_inverse_oh2004(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_sigma0vvdB, double __pyx_v_sigma0hhdB, double __pyx_v_sigma0hvdB, double __pyx_v_theta, double __pyx_v_f) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("inverse_oh2004", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((PyObject *)__pyx_f_6oh2004_inverse_oh2004(__pyx_v_sigma0vvdB, __pyx_v_sigma0hhdB, __pyx_v_sigma0hvdB, __pyx_v_theta, __pyx_v_f, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("oh2004.inverse_oh2004", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "oh2004.pyx":99 - * return result - * - * cpdef double lamda2freq(double lamda): # <<<<<<<<<<<<<< - * return 299792458.0/lamda - * - */ - -static PyObject *__pyx_pw_6oh2004_3lamda2freq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static double __pyx_f_6oh2004_lamda2freq(double __pyx_v_lamda, CYTHON_UNUSED int __pyx_skip_dispatch) { - double __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("lamda2freq", 0); - - /* "oh2004.pyx":100 - * - * cpdef double lamda2freq(double lamda): - * return 299792458.0/lamda # <<<<<<<<<<<<<< - * - * cpdef double freq2lamda(double freq): - */ - if (unlikely(__pyx_v_lamda == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 100, __pyx_L1_error) - } - __pyx_r = (299792458.0 / __pyx_v_lamda); - goto __pyx_L0; - - /* "oh2004.pyx":99 - * return result - * - * cpdef double lamda2freq(double lamda): # <<<<<<<<<<<<<< - * return 299792458.0/lamda - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_WriteUnraisable("oh2004.lamda2freq", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6oh2004_3lamda2freq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6oh2004_3lamda2freq(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - double __pyx_v_lamda; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("lamda2freq (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_lamda,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lamda)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lamda2freq") < 0)) __PYX_ERR(0, 99, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_lamda = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_lamda == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("lamda2freq", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 99, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("oh2004.lamda2freq", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6oh2004_2lamda2freq(__pyx_self, __pyx_v_lamda); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6oh2004_2lamda2freq(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_lamda) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("lamda2freq", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_f_6oh2004_lamda2freq(__pyx_v_lamda, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("oh2004.lamda2freq", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "oh2004.pyx":102 - * return 299792458.0/lamda - * - * cpdef double freq2lamda(double freq): # <<<<<<<<<<<<<< - * return 299792458.0/freq - * - */ - -static PyObject *__pyx_pw_6oh2004_5freq2lamda(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static double __pyx_f_6oh2004_freq2lamda(double __pyx_v_freq, CYTHON_UNUSED int __pyx_skip_dispatch) { - double __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("freq2lamda", 0); - - /* "oh2004.pyx":103 - * - * cpdef double freq2lamda(double freq): - * return 299792458.0/freq # <<<<<<<<<<<<<< - * - * # double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f - */ - if (unlikely(__pyx_v_freq == 0)) { - PyErr_SetString(PyExc_ZeroDivisionError, "float division"); - __PYX_ERR(0, 103, __pyx_L1_error) - } - __pyx_r = (299792458.0 / __pyx_v_freq); - goto __pyx_L0; - - /* "oh2004.pyx":102 - * return 299792458.0/lamda - * - * cpdef double freq2lamda(double freq): # <<<<<<<<<<<<<< - * return 299792458.0/freq - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_WriteUnraisable("oh2004.freq2lamda", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6oh2004_5freq2lamda(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6oh2004_5freq2lamda(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - double __pyx_v_freq; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("freq2lamda (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_freq,0}; - PyObject* values[1] = {0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_freq)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "freq2lamda") < 0)) __PYX_ERR(0, 102, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - } - __pyx_v_freq = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_freq == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 102, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("freq2lamda", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 102, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("oh2004.freq2lamda", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - __pyx_r = __pyx_pf_6oh2004_4freq2lamda(__pyx_self, __pyx_v_freq); - - /* function exit code */ - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6oh2004_4freq2lamda(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_freq) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("freq2lamda", 0); - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyFloat_FromDouble(__pyx_f_6oh2004_freq2lamda(__pyx_v_freq, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("oh2004.freq2lamda", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "oh2004.pyx":106 - * - * # double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f - * cpdef int retrieve_oh2004_main(int n,np.ndarray[double,ndim=1] mv,np.ndarray[double,ndim=1] h,np.ndarray[int,ndim=1] mask,np.ndarray[double,ndim=1] sigma0vvdB,np.ndarray[double,ndim=1] sigma0hhdB,np.ndarray[double,ndim=1] sigma0hvdB, np.ndarray[double,ndim=1] vh, np.ndarray[double,ndim=1] theta,double f): # <<<<<<<<<<<<<< - * cdef int i=0; - * cdef np.ndarray[double,ndim=1] result; - */ - -static PyObject *__pyx_pw_6oh2004_7retrieve_oh2004_main(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static int __pyx_f_6oh2004_retrieve_oh2004_main(int __pyx_v_n, PyArrayObject *__pyx_v_mv, PyArrayObject *__pyx_v_h, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_sigma0vvdB, PyArrayObject *__pyx_v_sigma0hhdB, PyArrayObject *__pyx_v_sigma0hvdB, CYTHON_UNUSED PyArrayObject *__pyx_v_vh, PyArrayObject *__pyx_v_theta, double __pyx_v_f, CYTHON_UNUSED int __pyx_skip_dispatch) { - int __pyx_v_i; - PyArrayObject *__pyx_v_result = 0; - __Pyx_LocalBuf_ND __pyx_pybuffernd_h; - __Pyx_Buffer __pyx_pybuffer_h; - __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; - __Pyx_Buffer __pyx_pybuffer_mask; - __Pyx_LocalBuf_ND __pyx_pybuffernd_mv; - __Pyx_Buffer __pyx_pybuffer_mv; - __Pyx_LocalBuf_ND __pyx_pybuffernd_result; - __Pyx_Buffer __pyx_pybuffer_result; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma0hhdB; - __Pyx_Buffer __pyx_pybuffer_sigma0hhdB; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma0hvdB; - __Pyx_Buffer __pyx_pybuffer_sigma0hvdB; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma0vvdB; - __Pyx_Buffer __pyx_pybuffer_sigma0vvdB; - __Pyx_LocalBuf_ND __pyx_pybuffernd_theta; - __Pyx_Buffer __pyx_pybuffer_theta; - __Pyx_LocalBuf_ND __pyx_pybuffernd_vh; - __Pyx_Buffer __pyx_pybuffer_vh; - int __pyx_r; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - Py_ssize_t __pyx_t_2; - int __pyx_t_3; - PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - double __pyx_t_6; - Py_ssize_t __pyx_t_7; - Py_ssize_t __pyx_t_8; - Py_ssize_t __pyx_t_9; - PyObject *__pyx_t_10 = NULL; - PyObject *__pyx_t_11 = NULL; - PyObject *__pyx_t_12 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("retrieve_oh2004_main", 0); - __pyx_pybuffer_result.pybuffer.buf = NULL; - __pyx_pybuffer_result.refcount = 0; - __pyx_pybuffernd_result.data = NULL; - __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result; - __pyx_pybuffer_mv.pybuffer.buf = NULL; - __pyx_pybuffer_mv.refcount = 0; - __pyx_pybuffernd_mv.data = NULL; - __pyx_pybuffernd_mv.rcbuffer = &__pyx_pybuffer_mv; - __pyx_pybuffer_h.pybuffer.buf = NULL; - __pyx_pybuffer_h.refcount = 0; - __pyx_pybuffernd_h.data = NULL; - __pyx_pybuffernd_h.rcbuffer = &__pyx_pybuffer_h; - __pyx_pybuffer_mask.pybuffer.buf = NULL; - __pyx_pybuffer_mask.refcount = 0; - __pyx_pybuffernd_mask.data = NULL; - __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; - __pyx_pybuffer_sigma0vvdB.pybuffer.buf = NULL; - __pyx_pybuffer_sigma0vvdB.refcount = 0; - __pyx_pybuffernd_sigma0vvdB.data = NULL; - __pyx_pybuffernd_sigma0vvdB.rcbuffer = &__pyx_pybuffer_sigma0vvdB; - __pyx_pybuffer_sigma0hhdB.pybuffer.buf = NULL; - __pyx_pybuffer_sigma0hhdB.refcount = 0; - __pyx_pybuffernd_sigma0hhdB.data = NULL; - __pyx_pybuffernd_sigma0hhdB.rcbuffer = &__pyx_pybuffer_sigma0hhdB; - __pyx_pybuffer_sigma0hvdB.pybuffer.buf = NULL; - __pyx_pybuffer_sigma0hvdB.refcount = 0; - __pyx_pybuffernd_sigma0hvdB.data = NULL; - __pyx_pybuffernd_sigma0hvdB.rcbuffer = &__pyx_pybuffer_sigma0hvdB; - __pyx_pybuffer_vh.pybuffer.buf = NULL; - __pyx_pybuffer_vh.refcount = 0; - __pyx_pybuffernd_vh.data = NULL; - __pyx_pybuffernd_vh.rcbuffer = &__pyx_pybuffer_vh; - __pyx_pybuffer_theta.pybuffer.buf = NULL; - __pyx_pybuffer_theta.refcount = 0; - __pyx_pybuffernd_theta.data = NULL; - __pyx_pybuffernd_theta.rcbuffer = &__pyx_pybuffer_theta; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mv.rcbuffer->pybuffer, (PyObject*)__pyx_v_mv, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_mv.diminfo[0].strides = __pyx_pybuffernd_mv.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mv.diminfo[0].shape = __pyx_pybuffernd_mv.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_h.rcbuffer->pybuffer, (PyObject*)__pyx_v_h, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_h.diminfo[0].strides = __pyx_pybuffernd_h.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_h.diminfo[0].shape = __pyx_pybuffernd_h.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_int, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma0vvdB, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_sigma0vvdB.diminfo[0].strides = __pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma0vvdB.diminfo[0].shape = __pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma0hhdB, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_sigma0hhdB.diminfo[0].strides = __pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma0hhdB.diminfo[0].shape = __pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma0hvdB, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_sigma0hvdB.diminfo[0].strides = __pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma0hvdB.diminfo[0].shape = __pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vh.rcbuffer->pybuffer, (PyObject*)__pyx_v_vh, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_vh.diminfo[0].strides = __pyx_pybuffernd_vh.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vh.diminfo[0].shape = __pyx_pybuffernd_vh.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_theta.rcbuffer->pybuffer, (PyObject*)__pyx_v_theta, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_theta.diminfo[0].strides = __pyx_pybuffernd_theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_theta.diminfo[0].shape = __pyx_pybuffernd_theta.rcbuffer->pybuffer.shape[0]; - - /* "oh2004.pyx":107 - * # double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f - * cpdef int retrieve_oh2004_main(int n,np.ndarray[double,ndim=1] mv,np.ndarray[double,ndim=1] h,np.ndarray[int,ndim=1] mask,np.ndarray[double,ndim=1] sigma0vvdB,np.ndarray[double,ndim=1] sigma0hhdB,np.ndarray[double,ndim=1] sigma0hvdB, np.ndarray[double,ndim=1] vh, np.ndarray[double,ndim=1] theta,double f): - * cdef int i=0; # <<<<<<<<<<<<<< - * cdef np.ndarray[double,ndim=1] result; - * while i= __pyx_pybuffernd_mask.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 110, __pyx_L1_error) - } - __pyx_t_1 = (((*__Pyx_BufPtrStrided1d(int *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_mask.diminfo[0].strides)) < 0.5) != 0); - if (__pyx_t_1) { - - /* "oh2004.pyx":111 - * while i= __pyx_pybuffernd_mv.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 111, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_mv.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_mv.diminfo[0].strides) = __pyx_t_6; - - /* "oh2004.pyx":112 - * if mask[i]<0.5: - * mv[i]=np.nan - * h[i] =np.nan # <<<<<<<<<<<<<< - * else: - * #print(i) - */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_nan); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_2 = __pyx_v_i; - __pyx_t_3 = -1; - if (__pyx_t_2 < 0) { - __pyx_t_2 += __pyx_pybuffernd_h.diminfo[0].shape; - if (unlikely(__pyx_t_2 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_2 >= __pyx_pybuffernd_h.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 112, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_h.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_h.diminfo[0].strides) = __pyx_t_6; - - /* "oh2004.pyx":110 - * cdef np.ndarray[double,ndim=1] result; - * while i= __pyx_pybuffernd_sigma0vvdB.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 116, __pyx_L1_error) - } - __pyx_t_7 = __pyx_v_i; - __pyx_t_3 = -1; - if (__pyx_t_7 < 0) { - __pyx_t_7 += __pyx_pybuffernd_sigma0hhdB.diminfo[0].shape; - if (unlikely(__pyx_t_7 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_7 >= __pyx_pybuffernd_sigma0hhdB.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 116, __pyx_L1_error) - } - __pyx_t_8 = __pyx_v_i; - __pyx_t_3 = -1; - if (__pyx_t_8 < 0) { - __pyx_t_8 += __pyx_pybuffernd_sigma0hvdB.diminfo[0].shape; - if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_sigma0hvdB.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 116, __pyx_L1_error) - } - __pyx_t_9 = __pyx_v_i; - __pyx_t_3 = -1; - if (__pyx_t_9 < 0) { - __pyx_t_9 += __pyx_pybuffernd_theta.diminfo[0].shape; - if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_9 >= __pyx_pybuffernd_theta.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 116, __pyx_L1_error) - } - __pyx_t_4 = ((PyObject *)__pyx_f_6oh2004_inverse_oh2004((*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer.buf, __pyx_t_2, __pyx_pybuffernd_sigma0vvdB.diminfo[0].strides)), (*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer.buf, __pyx_t_7, __pyx_pybuffernd_sigma0hhdB.diminfo[0].strides)), (*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_sigma0hvdB.diminfo[0].strides)), (*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_theta.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_theta.diminfo[0].strides)), __pyx_v_f, 0)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 116, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_4), &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); - if (unlikely(__pyx_t_3 < 0)) { - PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { - Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); - __Pyx_RaiseBufferFallbackError(); - } else { - PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); - } - __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0; - } - __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0]; - if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 116, __pyx_L1_error) - } - __Pyx_XDECREF_SET(__pyx_v_result, ((PyArrayObject *)__pyx_t_4)); - __pyx_t_4 = 0; - - /* "oh2004.pyx":118 - * result= inverse_oh2004(sigma0vvdB[i], sigma0hhdB[i],sigma0hvdB[i], theta[i], f) - * ##print(result) - * mv[i]=result[0] # <<<<<<<<<<<<<< - * h[i] =result[1] - * ##print(mv[i],h[i]) - */ - __pyx_t_9 = 0; - __pyx_t_3 = -1; - if (__pyx_t_9 < 0) { - __pyx_t_9 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_9 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 118, __pyx_L1_error) - } - __pyx_t_8 = __pyx_v_i; - __pyx_t_3 = -1; - if (__pyx_t_8 < 0) { - __pyx_t_8 += __pyx_pybuffernd_mv.diminfo[0].shape; - if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_mv.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 118, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_mv.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_mv.diminfo[0].strides) = (*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_result.diminfo[0].strides)); - - /* "oh2004.pyx":119 - * ##print(result) - * mv[i]=result[0] - * h[i] =result[1] # <<<<<<<<<<<<<< - * ##print(mv[i],h[i]) - * ##print(result[0],result[1]) - */ - __pyx_t_9 = 1; - __pyx_t_3 = -1; - if (__pyx_t_9 < 0) { - __pyx_t_9 += __pyx_pybuffernd_result.diminfo[0].shape; - if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_9 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 119, __pyx_L1_error) - } - __pyx_t_8 = __pyx_v_i; - __pyx_t_3 = -1; - if (__pyx_t_8 < 0) { - __pyx_t_8 += __pyx_pybuffernd_h.diminfo[0].shape; - if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0; - } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_h.diminfo[0].shape)) __pyx_t_3 = 0; - if (unlikely(__pyx_t_3 != -1)) { - __Pyx_RaiseBufferIndexError(__pyx_t_3); - __PYX_ERR(0, 119, __pyx_L1_error) - } - *__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_h.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_h.diminfo[0].strides) = (*__Pyx_BufPtrStrided1d(double *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_9, __pyx_pybuffernd_result.diminfo[0].strides)); - } - __pyx_L5:; - - /* "oh2004.pyx":122 - * ##print(mv[i],h[i]) - * ##print(result[0],result[1]) - * i=i+1 # <<<<<<<<<<<<<< - * return 1 - * - */ - __pyx_v_i = (__pyx_v_i + 1); - } - - /* "oh2004.pyx":123 - * ##print(result[0],result[1]) - * i=i+1 - * return 1 # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = 1; - goto __pyx_L0; - - /* "oh2004.pyx":106 - * - * # double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f - * cpdef int retrieve_oh2004_main(int n,np.ndarray[double,ndim=1] mv,np.ndarray[double,ndim=1] h,np.ndarray[int,ndim=1] mask,np.ndarray[double,ndim=1] sigma0vvdB,np.ndarray[double,ndim=1] sigma0hhdB,np.ndarray[double,ndim=1] sigma0hvdB, np.ndarray[double,ndim=1] vh, np.ndarray[double,ndim=1] theta,double f): # <<<<<<<<<<<<<< - * cdef int i=0; - * cdef np.ndarray[double,ndim=1] result; - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_h.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mv.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_theta.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_WriteUnraisable("oh2004.retrieve_oh2004_main", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); - __pyx_r = 0; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_h.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mv.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_theta.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XDECREF((PyObject *)__pyx_v_result); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* Python wrapper */ -static PyObject *__pyx_pw_6oh2004_7retrieve_oh2004_main(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyObject *__pyx_pw_6oh2004_7retrieve_oh2004_main(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { - int __pyx_v_n; - PyArrayObject *__pyx_v_mv = 0; - PyArrayObject *__pyx_v_h = 0; - PyArrayObject *__pyx_v_mask = 0; - PyArrayObject *__pyx_v_sigma0vvdB = 0; - PyArrayObject *__pyx_v_sigma0hhdB = 0; - PyArrayObject *__pyx_v_sigma0hvdB = 0; - PyArrayObject *__pyx_v_vh = 0; - PyArrayObject *__pyx_v_theta = 0; - double __pyx_v_f; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - PyObject *__pyx_r = 0; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("retrieve_oh2004_main (wrapper)", 0); - { - static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_mv,&__pyx_n_s_h,&__pyx_n_s_mask,&__pyx_n_s_sigma0vvdB,&__pyx_n_s_sigma0hhdB,&__pyx_n_s_sigma0hvdB,&__pyx_n_s_vh,&__pyx_n_s_theta,&__pyx_n_s_f,0}; - PyObject* values[10] = {0,0,0,0,0,0,0,0,0,0}; - if (unlikely(__pyx_kwds)) { - Py_ssize_t kw_args; - const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); - switch (pos_args) { - case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9); - CYTHON_FALLTHROUGH; - case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8); - CYTHON_FALLTHROUGH; - case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); - CYTHON_FALLTHROUGH; - case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); - CYTHON_FALLTHROUGH; - case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); - CYTHON_FALLTHROUGH; - case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - CYTHON_FALLTHROUGH; - case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - CYTHON_FALLTHROUGH; - case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - CYTHON_FALLTHROUGH; - case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - CYTHON_FALLTHROUGH; - case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - CYTHON_FALLTHROUGH; - case 0: break; - default: goto __pyx_L5_argtuple_error; - } - kw_args = PyDict_Size(__pyx_kwds); - switch (pos_args) { - case 0: - if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; - else goto __pyx_L5_argtuple_error; - CYTHON_FALLTHROUGH; - case 1: - if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mv)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 1); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 2: - if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 2); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 3: - if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_mask)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 3); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 4: - if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma0vvdB)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 4); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 5: - if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma0hhdB)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 5); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 6: - if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sigma0hvdB)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 6); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 7: - if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_vh)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 7); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 8: - if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 8); __PYX_ERR(0, 106, __pyx_L3_error) - } - CYTHON_FALLTHROUGH; - case 9: - if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--; - else { - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, 9); __PYX_ERR(0, 106, __pyx_L3_error) - } - } - if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "retrieve_oh2004_main") < 0)) __PYX_ERR(0, 106, __pyx_L3_error) - } - } else if (PyTuple_GET_SIZE(__pyx_args) != 10) { - goto __pyx_L5_argtuple_error; - } else { - values[0] = PyTuple_GET_ITEM(__pyx_args, 0); - values[1] = PyTuple_GET_ITEM(__pyx_args, 1); - values[2] = PyTuple_GET_ITEM(__pyx_args, 2); - values[3] = PyTuple_GET_ITEM(__pyx_args, 3); - values[4] = PyTuple_GET_ITEM(__pyx_args, 4); - values[5] = PyTuple_GET_ITEM(__pyx_args, 5); - values[6] = PyTuple_GET_ITEM(__pyx_args, 6); - values[7] = PyTuple_GET_ITEM(__pyx_args, 7); - values[8] = PyTuple_GET_ITEM(__pyx_args, 8); - values[9] = PyTuple_GET_ITEM(__pyx_args, 9); - } - __pyx_v_n = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_n == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L3_error) - __pyx_v_mv = ((PyArrayObject *)values[1]); - __pyx_v_h = ((PyArrayObject *)values[2]); - __pyx_v_mask = ((PyArrayObject *)values[3]); - __pyx_v_sigma0vvdB = ((PyArrayObject *)values[4]); - __pyx_v_sigma0hhdB = ((PyArrayObject *)values[5]); - __pyx_v_sigma0hvdB = ((PyArrayObject *)values[6]); - __pyx_v_vh = ((PyArrayObject *)values[7]); - __pyx_v_theta = ((PyArrayObject *)values[8]); - __pyx_v_f = __pyx_PyFloat_AsDouble(values[9]); if (unlikely((__pyx_v_f == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L3_error) - } - goto __pyx_L4_argument_unpacking_done; - __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("retrieve_oh2004_main", 1, 10, 10, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 106, __pyx_L3_error) - __pyx_L3_error:; - __Pyx_AddTraceback("oh2004.retrieve_oh2004_main", __pyx_clineno, __pyx_lineno, __pyx_filename); - __Pyx_RefNannyFinishContext(); - return NULL; - __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mv), __pyx_ptype_5numpy_ndarray, 1, "mv", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_h), __pyx_ptype_5numpy_ndarray, 1, "h", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sigma0vvdB), __pyx_ptype_5numpy_ndarray, 1, "sigma0vvdB", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sigma0hhdB), __pyx_ptype_5numpy_ndarray, 1, "sigma0hhdB", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_sigma0hvdB), __pyx_ptype_5numpy_ndarray, 1, "sigma0hvdB", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vh), __pyx_ptype_5numpy_ndarray, 1, "vh", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_theta), __pyx_ptype_5numpy_ndarray, 1, "theta", 0))) __PYX_ERR(0, 106, __pyx_L1_error) - __pyx_r = __pyx_pf_6oh2004_6retrieve_oh2004_main(__pyx_self, __pyx_v_n, __pyx_v_mv, __pyx_v_h, __pyx_v_mask, __pyx_v_sigma0vvdB, __pyx_v_sigma0hhdB, __pyx_v_sigma0hvdB, __pyx_v_vh, __pyx_v_theta, __pyx_v_f); - - /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -static PyObject *__pyx_pf_6oh2004_6retrieve_oh2004_main(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_n, PyArrayObject *__pyx_v_mv, PyArrayObject *__pyx_v_h, PyArrayObject *__pyx_v_mask, PyArrayObject *__pyx_v_sigma0vvdB, PyArrayObject *__pyx_v_sigma0hhdB, PyArrayObject *__pyx_v_sigma0hvdB, PyArrayObject *__pyx_v_vh, PyArrayObject *__pyx_v_theta, double __pyx_v_f) { - __Pyx_LocalBuf_ND __pyx_pybuffernd_h; - __Pyx_Buffer __pyx_pybuffer_h; - __Pyx_LocalBuf_ND __pyx_pybuffernd_mask; - __Pyx_Buffer __pyx_pybuffer_mask; - __Pyx_LocalBuf_ND __pyx_pybuffernd_mv; - __Pyx_Buffer __pyx_pybuffer_mv; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma0hhdB; - __Pyx_Buffer __pyx_pybuffer_sigma0hhdB; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma0hvdB; - __Pyx_Buffer __pyx_pybuffer_sigma0hvdB; - __Pyx_LocalBuf_ND __pyx_pybuffernd_sigma0vvdB; - __Pyx_Buffer __pyx_pybuffer_sigma0vvdB; - __Pyx_LocalBuf_ND __pyx_pybuffernd_theta; - __Pyx_Buffer __pyx_pybuffer_theta; - __Pyx_LocalBuf_ND __pyx_pybuffernd_vh; - __Pyx_Buffer __pyx_pybuffer_vh; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("retrieve_oh2004_main", 0); - __pyx_pybuffer_mv.pybuffer.buf = NULL; - __pyx_pybuffer_mv.refcount = 0; - __pyx_pybuffernd_mv.data = NULL; - __pyx_pybuffernd_mv.rcbuffer = &__pyx_pybuffer_mv; - __pyx_pybuffer_h.pybuffer.buf = NULL; - __pyx_pybuffer_h.refcount = 0; - __pyx_pybuffernd_h.data = NULL; - __pyx_pybuffernd_h.rcbuffer = &__pyx_pybuffer_h; - __pyx_pybuffer_mask.pybuffer.buf = NULL; - __pyx_pybuffer_mask.refcount = 0; - __pyx_pybuffernd_mask.data = NULL; - __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask; - __pyx_pybuffer_sigma0vvdB.pybuffer.buf = NULL; - __pyx_pybuffer_sigma0vvdB.refcount = 0; - __pyx_pybuffernd_sigma0vvdB.data = NULL; - __pyx_pybuffernd_sigma0vvdB.rcbuffer = &__pyx_pybuffer_sigma0vvdB; - __pyx_pybuffer_sigma0hhdB.pybuffer.buf = NULL; - __pyx_pybuffer_sigma0hhdB.refcount = 0; - __pyx_pybuffernd_sigma0hhdB.data = NULL; - __pyx_pybuffernd_sigma0hhdB.rcbuffer = &__pyx_pybuffer_sigma0hhdB; - __pyx_pybuffer_sigma0hvdB.pybuffer.buf = NULL; - __pyx_pybuffer_sigma0hvdB.refcount = 0; - __pyx_pybuffernd_sigma0hvdB.data = NULL; - __pyx_pybuffernd_sigma0hvdB.rcbuffer = &__pyx_pybuffer_sigma0hvdB; - __pyx_pybuffer_vh.pybuffer.buf = NULL; - __pyx_pybuffer_vh.refcount = 0; - __pyx_pybuffernd_vh.data = NULL; - __pyx_pybuffernd_vh.rcbuffer = &__pyx_pybuffer_vh; - __pyx_pybuffer_theta.pybuffer.buf = NULL; - __pyx_pybuffer_theta.refcount = 0; - __pyx_pybuffernd_theta.data = NULL; - __pyx_pybuffernd_theta.rcbuffer = &__pyx_pybuffer_theta; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mv.rcbuffer->pybuffer, (PyObject*)__pyx_v_mv, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_mv.diminfo[0].strides = __pyx_pybuffernd_mv.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mv.diminfo[0].shape = __pyx_pybuffernd_mv.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_h.rcbuffer->pybuffer, (PyObject*)__pyx_v_h, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_h.diminfo[0].strides = __pyx_pybuffernd_h.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_h.diminfo[0].shape = __pyx_pybuffernd_h.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_int, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma0vvdB, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_sigma0vvdB.diminfo[0].strides = __pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma0vvdB.diminfo[0].shape = __pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma0hhdB, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_sigma0hhdB.diminfo[0].strides = __pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma0hhdB.diminfo[0].shape = __pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer, (PyObject*)__pyx_v_sigma0hvdB, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_sigma0hvdB.diminfo[0].strides = __pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sigma0hvdB.diminfo[0].shape = __pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vh.rcbuffer->pybuffer, (PyObject*)__pyx_v_vh, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_vh.diminfo[0].strides = __pyx_pybuffernd_vh.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vh.diminfo[0].shape = __pyx_pybuffernd_vh.rcbuffer->pybuffer.shape[0]; - { - __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_theta.rcbuffer->pybuffer, (PyObject*)__pyx_v_theta, &__Pyx_TypeInfo_double, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) - } - __pyx_pybuffernd_theta.diminfo[0].strides = __pyx_pybuffernd_theta.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_theta.diminfo[0].shape = __pyx_pybuffernd_theta.rcbuffer->pybuffer.shape[0]; - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_f_6oh2004_retrieve_oh2004_main(__pyx_v_n, __pyx_v_mv, __pyx_v_h, __pyx_v_mask, __pyx_v_sigma0vvdB, __pyx_v_sigma0hhdB, __pyx_v_sigma0hvdB, __pyx_v_vh, __pyx_v_theta, __pyx_v_f, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_h.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mv.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_theta.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vh.rcbuffer->pybuffer); - __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} - __Pyx_AddTraceback("oh2004.retrieve_oh2004_main", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; - goto __pyx_L2; - __pyx_L0:; - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_h.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mv.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hhdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0hvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sigma0vvdB.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_theta.rcbuffer->pybuffer); - __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_vh.rcbuffer->pybuffer); - __pyx_L2:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":735 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":736 - * - * cdef inline object PyArray_MultiIterNew1(a): - * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew2(a, b): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 736, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":735 - * ctypedef npy_cdouble complex_t - * - * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(1, a) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":738 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":739 - * - * cdef inline object PyArray_MultiIterNew2(a, b): - * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 739, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":738 - * return PyArray_MultiIterNew(1, a) - * - * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(2, a, b) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":741 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":742 - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): - * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 742, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":741 - * return PyArray_MultiIterNew(2, a, b) - * - * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(3, a, b, c) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":744 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":745 - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): - * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":744 - * return PyArray_MultiIterNew(3, a, b, c) - * - * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(4, a, b, c, d) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":747 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":748 - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): - * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - */ - __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 748, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_r = __pyx_t_1; - __pyx_t_1 = 0; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":747 - * return PyArray_MultiIterNew(4, a, b, c, d) - * - * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - */ - - /* function exit code */ - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":750 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__pyx_v_d) { - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":751 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - __pyx_t_1 = (PyDataType_HASSUBARRAY(__pyx_v_d) != 0); - if (__pyx_t_1) { - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":752 - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape # <<<<<<<<<<<<<< - * else: - * return () - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject*)__pyx_v_d->subarray->shape)); - __pyx_r = ((PyObject*)__pyx_v_d->subarray->shape); - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":751 - * - * cdef inline tuple PyDataType_SHAPE(dtype d): - * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< - * return d.subarray.shape - * else: - */ - } - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":754 - * return d.subarray.shape - * else: - * return () # <<<<<<<<<<<<<< - * - * - */ - /*else*/ { - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(__pyx_empty_tuple); - __pyx_r = __pyx_empty_tuple; - goto __pyx_L0; - } - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":750 - * return PyArray_MultiIterNew(5, a, b, c, d, e) - * - * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< - * if PyDataType_HASSUBARRAY(d): - * return d.subarray.shape - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":931 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - -static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("set_array_base", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":932 - * - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< - * PyArray_SetBaseObject(arr, base) - * - */ - Py_INCREF(__pyx_v_base); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":933 - * cdef inline void set_array_base(ndarray arr, object base): - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< - * - * cdef inline object get_array_base(ndarray arr): - */ - (void)(PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base)); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":931 - * int _import_umath() except -1 - * - * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< - * Py_INCREF(base) # important to do this before stealing the reference below! - * PyArray_SetBaseObject(arr, base) - */ - - /* function exit code */ - __Pyx_RefNannyFinishContext(); -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":935 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - -static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) { - PyObject *__pyx_v_base; - PyObject *__pyx_r = NULL; - __Pyx_RefNannyDeclarations - int __pyx_t_1; - __Pyx_RefNannySetupContext("get_array_base", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":936 - * - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< - * if base is NULL: - * return None - */ - __pyx_v_base = PyArray_BASE(__pyx_v_arr); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":937 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - __pyx_t_1 = ((__pyx_v_base == NULL) != 0); - if (__pyx_t_1) { - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":938 - * base = PyArray_BASE(arr) - * if base is NULL: - * return None # <<<<<<<<<<<<<< - * return base - * - */ - __Pyx_XDECREF(__pyx_r); - __pyx_r = Py_None; __Pyx_INCREF(Py_None); - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":937 - * cdef inline object get_array_base(ndarray arr): - * base = PyArray_BASE(arr) - * if base is NULL: # <<<<<<<<<<<<<< - * return None - * return base - */ - } - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":939 - * if base is NULL: - * return None - * return base # <<<<<<<<<<<<<< - * - * # Versions of the import_* functions which are more suitable for - */ - __Pyx_XDECREF(__pyx_r); - __Pyx_INCREF(((PyObject *)__pyx_v_base)); - __pyx_r = ((PyObject *)__pyx_v_base); - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":935 - * PyArray_SetBaseObject(arr, base) - * - * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< - * base = PyArray_BASE(arr) - * if base is NULL: - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_XGIVEREF(__pyx_r); - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":943 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_array", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":945 - * cdef inline int import_array() except -1: - * try: - * __pyx_import_array() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") - */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 945, __pyx_L3_error) - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":946 - * try: - * __pyx_import_array() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.multiarray failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 946, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":947 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 947, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 947, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":944 - * # Cython code. - * cdef inline int import_array() except -1: - * try: # <<<<<<<<<<<<<< - * __pyx_import_array() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":943 - * # Versions of the import_* functions which are more suitable for - * # Cython code. - * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< - * try: - * __pyx_import_array() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":949 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_umath", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":951 - * cdef inline int import_umath() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 951, __pyx_L3_error) - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":952 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 952, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":953 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 953, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 953, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":950 - * - * cdef inline int import_umath() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":949 - * raise ImportError("numpy.core.multiarray failed to import") - * - * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":955 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - -static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { - int __pyx_r; - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - PyObject *__pyx_t_3 = NULL; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - PyObject *__pyx_t_8 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("import_ufunc", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); - __Pyx_XGOTREF(__pyx_t_1); - __Pyx_XGOTREF(__pyx_t_2); - __Pyx_XGOTREF(__pyx_t_3); - /*try:*/ { - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":957 - * cdef inline int import_ufunc() except -1: - * try: - * _import_umath() # <<<<<<<<<<<<<< - * except Exception: - * raise ImportError("numpy.core.umath failed to import") - */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 957, __pyx_L3_error) - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - } - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L8_try_end; - __pyx_L3_error:; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":958 - * try: - * _import_umath() - * except Exception: # <<<<<<<<<<<<<< - * raise ImportError("numpy.core.umath failed to import") - * - */ - __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); - if (__pyx_t_4) { - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 958, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GOTREF(__pyx_t_6); - __Pyx_GOTREF(__pyx_t_7); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":959 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef extern from *: - */ - __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ImportError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 959, __pyx_L5_except_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_Raise(__pyx_t_8, 0, 0, 0); - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(1, 959, __pyx_L5_except_error) - } - goto __pyx_L5_except_error; - __pyx_L5_except_error:; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":956 - * - * cdef inline int import_ufunc() except -1: - * try: # <<<<<<<<<<<<<< - * _import_umath() - * except Exception: - */ - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; - __pyx_L8_try_end:; - } - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":955 - * raise ImportError("numpy.core.umath failed to import") - * - * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< - * try: - * _import_umath() - */ - - /* function exit code */ - __pyx_r = 0; - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); - __Pyx_XDECREF(__pyx_t_8); - __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = -1; - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":969 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_timedelta64_object", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":981 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":969 - * - * - * cdef inline bint is_timedelta64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.timedelta64)` - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":984 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - -static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { - int __pyx_r; - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("is_datetime64_object", 0); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":996 - * bool - * """ - * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":984 - * - * - * cdef inline bint is_datetime64_object(object obj): # <<<<<<<<<<<<<< - * """ - * Cython equivalent of `isinstance(obj, np.datetime64)` - */ - - /* function exit code */ - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":999 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - -static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { - npy_datetime __pyx_r; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1006 - * also needed. That can be found using `get_datetime64_unit`. - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":999 - * - * - * cdef inline npy_datetime get_datetime64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy datetime64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1009 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - -static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { - npy_timedelta __pyx_r; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1013 - * returns the int64 value underlying scalar numpy timedelta64 object - * """ - * return (obj).obval # <<<<<<<<<<<<<< - * - * - */ - __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1009 - * - * - * cdef inline npy_timedelta get_timedelta64_value(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the int64 value underlying scalar numpy timedelta64 object - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -/* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - -static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { - NPY_DATETIMEUNIT __pyx_r; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1020 - * returns the unit part of the dtype for a numpy datetime64 object. - * """ - * return (obj).obmeta.base # <<<<<<<<<<<<<< - */ - __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); - goto __pyx_L0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /* function exit code */ - __pyx_L0:; - return __pyx_r; -} - -static PyMethodDef __pyx_methods[] = { - {"inverse_oh2004", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6oh2004_1inverse_oh2004, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6oh2004_inverse_oh2004}, - {"lamda2freq", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6oh2004_3lamda2freq, METH_VARARGS|METH_KEYWORDS, 0}, - {"freq2lamda", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6oh2004_5freq2lamda, METH_VARARGS|METH_KEYWORDS, 0}, - {"retrieve_oh2004_main", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6oh2004_7retrieve_oh2004_main, METH_VARARGS|METH_KEYWORDS, 0}, - {0, 0, 0, 0} -}; - -#if PY_MAJOR_VERSION >= 3 -#if CYTHON_PEP489_MULTI_PHASE_INIT -static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ -static int __pyx_pymod_exec_oh2004(PyObject* module); /*proto*/ -static PyModuleDef_Slot __pyx_moduledef_slots[] = { - {Py_mod_create, (void*)__pyx_pymod_create}, - {Py_mod_exec, (void*)__pyx_pymod_exec_oh2004}, - {0, NULL} -}; -#endif - -static struct PyModuleDef __pyx_moduledef = { - PyModuleDef_HEAD_INIT, - "oh2004", - __pyx_k_Created_on_Tue_Jun_4_14_59_54_2, /* m_doc */ - #if CYTHON_PEP489_MULTI_PHASE_INIT - 0, /* m_size */ - #else - -1, /* m_size */ - #endif - __pyx_methods /* m_methods */, - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_moduledef_slots, /* m_slots */ - #else - NULL, /* m_reload */ - #endif - NULL, /* m_traverse */ - NULL, /* m_clear */ - NULL /* m_free */ -}; -#endif -#ifndef CYTHON_SMALL_CODE -#if defined(__clang__) - #define CYTHON_SMALL_CODE -#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) - #define CYTHON_SMALL_CODE __attribute__((cold)) -#else - #define CYTHON_SMALL_CODE -#endif -#endif - -static __Pyx_StringTabEntry __pyx_string_tab[] = { - {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1}, - {&__pyx_n_s_abs, __pyx_k_abs, sizeof(__pyx_k_abs), 0, 0, 1, 1}, - {&__pyx_n_s_arange, __pyx_k_arange, sizeof(__pyx_k_arange), 0, 0, 1, 1}, - {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, - {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1}, - {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1}, - {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1}, - {&__pyx_n_s_fmin, __pyx_k_fmin, sizeof(__pyx_k_fmin), 0, 0, 1, 1}, - {&__pyx_n_s_freq, __pyx_k_freq, sizeof(__pyx_k_freq), 0, 0, 1, 1}, - {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, - {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, - {&__pyx_n_s_lamda, __pyx_k_lamda, sizeof(__pyx_k_lamda), 0, 0, 1, 1}, - {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1}, - {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, - {&__pyx_n_s_mask, __pyx_k_mask, sizeof(__pyx_k_mask), 0, 0, 1, 1}, - {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1}, - {&__pyx_n_s_mv, __pyx_k_mv, sizeof(__pyx_k_mv), 0, 0, 1, 1}, - {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1}, - {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, - {&__pyx_n_s_nan, __pyx_k_nan, sizeof(__pyx_k_nan), 0, 0, 1, 1}, - {&__pyx_n_s_nanmin, __pyx_k_nanmin, sizeof(__pyx_k_nanmin), 0, 0, 1, 1}, - {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1}, - {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1}, - {&__pyx_kp_s_numpy_core_multiarray_failed_to, __pyx_k_numpy_core_multiarray_failed_to, sizeof(__pyx_k_numpy_core_multiarray_failed_to), 0, 0, 1, 0}, - {&__pyx_kp_s_numpy_core_umath_failed_to_impor, __pyx_k_numpy_core_umath_failed_to_impor, sizeof(__pyx_k_numpy_core_umath_failed_to_impor), 0, 0, 1, 0}, - {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1}, - {&__pyx_n_s_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 0, 1, 1}, - {&__pyx_n_s_power, __pyx_k_power, sizeof(__pyx_k_power), 0, 0, 1, 1}, - {&__pyx_n_s_scipy_optimize, __pyx_k_scipy_optimize, sizeof(__pyx_k_scipy_optimize), 0, 0, 1, 1}, - {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, - {&__pyx_n_s_sigma0hhdB, __pyx_k_sigma0hhdB, sizeof(__pyx_k_sigma0hhdB), 0, 0, 1, 1}, - {&__pyx_n_s_sigma0hvdB, __pyx_k_sigma0hvdB, sizeof(__pyx_k_sigma0hvdB), 0, 0, 1, 1}, - {&__pyx_n_s_sigma0vvdB, __pyx_k_sigma0vvdB, sizeof(__pyx_k_sigma0vvdB), 0, 0, 1, 1}, - {&__pyx_n_s_sin, __pyx_k_sin, sizeof(__pyx_k_sin), 0, 0, 1, 1}, - {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, - {&__pyx_n_s_theta, __pyx_k_theta, sizeof(__pyx_k_theta), 0, 0, 1, 1}, - {&__pyx_n_s_vh, __pyx_k_vh, sizeof(__pyx_k_vh), 0, 0, 1, 1}, - {&__pyx_n_s_where, __pyx_k_where, sizeof(__pyx_k_where), 0, 0, 1, 1}, - {0, 0, 0, 0, 0, 0, 0} -}; -static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 947, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - - /* "oh2004.pyx":44 - * - * - * cdef np.ndarray[double,ndim=1] mv0 = np.arange(0.05,0.9,0.01) # set Gamma0 range of values (fine increments) # <<<<<<<<<<<<<< - * - * ## First estimates s1 and mv1 - */ - __pyx_tuple_ = PyTuple_Pack(3, __pyx_float_0_05, __pyx_float_0_9, __pyx_float_0_01); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 44, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple_); - __Pyx_GIVEREF(__pyx_tuple_); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":947 - * __pyx_import_array() - * except Exception: - * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_umath() except -1: - */ - __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_multiarray_failed_to); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(1, 947, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__2); - __Pyx_GIVEREF(__pyx_tuple__2); - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":953 - * _import_umath() - * except Exception: - * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< - * - * cdef inline int import_ufunc() except -1: - */ - __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_numpy_core_umath_failed_to_impor); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 953, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__3); - __Pyx_GIVEREF(__pyx_tuple__3); - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_RefNannyFinishContext(); - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { - if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_float_1_ = PyFloat_FromDouble(1.); if (unlikely(!__pyx_float_1_)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_7 = PyFloat_FromDouble(0.7); if (unlikely(!__pyx_float_0_7)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_9 = PyFloat_FromDouble(0.9); if (unlikely(!__pyx_float_0_9)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_1_4 = PyFloat_FromDouble(1.4); if (unlikely(!__pyx_float_1_4)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_10_ = PyFloat_FromDouble(10.); if (unlikely(!__pyx_float_10_)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_2_2 = PyFloat_FromDouble(2.2); if (unlikely(!__pyx_float_2_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_01 = PyFloat_FromDouble(0.01); if (unlikely(!__pyx_float_0_01)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_05 = PyFloat_FromDouble(0.05); if (unlikely(!__pyx_float_0_05)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_11 = PyFloat_FromDouble(0.11); if (unlikely(!__pyx_float_0_11)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_13 = PyFloat_FromDouble(0.13); if (unlikely(!__pyx_float_0_13)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_35 = PyFloat_FromDouble(0.35); if (unlikely(!__pyx_float_0_35)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_095 = PyFloat_FromDouble(0.095); if (unlikely(!__pyx_float_0_095)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_0_556 = PyFloat_FromDouble(0.556); if (unlikely(!__pyx_float_0_556)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_neg_0_4 = PyFloat_FromDouble(-0.4); if (unlikely(!__pyx_float_neg_0_4)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_neg_1_3 = PyFloat_FromDouble(-1.3); if (unlikely(!__pyx_float_neg_1_3)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_float_neg_0_65 = PyFloat_FromDouble(-0.65); if (unlikely(!__pyx_float_neg_0_65)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error) - return 0; - __pyx_L1_error:; - return -1; -} - -static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ -static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ - -static int __Pyx_modinit_global_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); - /*--- Global init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_variable_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); - /*--- Variable export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_export_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); - /*--- Function export code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_init_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); - /*--- Type init code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_type_import_code(void) { - __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); - /*--- Type import code ---*/ - __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", - #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), - #else - sizeof(PyHeapTypeObject), - #endif - __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_ptype_5numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_dtype) __PYX_ERR(1, 200, __pyx_L1_error) - __pyx_ptype_5numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_flatiter) __PYX_ERR(1, 223, __pyx_L1_error) - __pyx_ptype_5numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_broadcast) __PYX_ERR(1, 227, __pyx_L1_error) - __pyx_ptype_5numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ndarray) __PYX_ERR(1, 239, __pyx_L1_error) - __pyx_ptype_5numpy_generic = __Pyx_ImportType(__pyx_t_1, "numpy", "generic", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_generic) __PYX_ERR(1, 771, __pyx_L1_error) - __pyx_ptype_5numpy_number = __Pyx_ImportType(__pyx_t_1, "numpy", "number", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_number) __PYX_ERR(1, 773, __pyx_L1_error) - __pyx_ptype_5numpy_integer = __Pyx_ImportType(__pyx_t_1, "numpy", "integer", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_integer) __PYX_ERR(1, 775, __pyx_L1_error) - __pyx_ptype_5numpy_signedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "signedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_signedinteger) __PYX_ERR(1, 777, __pyx_L1_error) - __pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType(__pyx_t_1, "numpy", "unsignedinteger", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(1, 779, __pyx_L1_error) - __pyx_ptype_5numpy_inexact = __Pyx_ImportType(__pyx_t_1, "numpy", "inexact", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_inexact) __PYX_ERR(1, 781, __pyx_L1_error) - __pyx_ptype_5numpy_floating = __Pyx_ImportType(__pyx_t_1, "numpy", "floating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_floating) __PYX_ERR(1, 783, __pyx_L1_error) - __pyx_ptype_5numpy_complexfloating = __Pyx_ImportType(__pyx_t_1, "numpy", "complexfloating", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_complexfloating) __PYX_ERR(1, 785, __pyx_L1_error) - __pyx_ptype_5numpy_flexible = __Pyx_ImportType(__pyx_t_1, "numpy", "flexible", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_flexible) __PYX_ERR(1, 787, __pyx_L1_error) - __pyx_ptype_5numpy_character = __Pyx_ImportType(__pyx_t_1, "numpy", "character", sizeof(PyObject), __Pyx_ImportType_CheckSize_Warn); - if (!__pyx_ptype_5numpy_character) __PYX_ERR(1, 789, __pyx_L1_error) - __pyx_ptype_5numpy_ufunc = __Pyx_ImportType(__pyx_t_1, "numpy", "ufunc", sizeof(PyUFuncObject), __Pyx_ImportType_CheckSize_Ignore); - if (!__pyx_ptype_5numpy_ufunc) __PYX_ERR(1, 827, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_RefNannyFinishContext(); - return 0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_RefNannyFinishContext(); - return -1; -} - -static int __Pyx_modinit_variable_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); - /*--- Variable import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - -static int __Pyx_modinit_function_import_code(void) { - __Pyx_RefNannyDeclarations - __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); - /*--- Function import code ---*/ - __Pyx_RefNannyFinishContext(); - return 0; -} - - -#ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC -#elif PY_MAJOR_VERSION < 3 -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" void -#else -#define __Pyx_PyMODINIT_FUNC void -#endif -#else -#ifdef __cplusplus -#define __Pyx_PyMODINIT_FUNC extern "C" PyObject * -#else -#define __Pyx_PyMODINIT_FUNC PyObject * -#endif -#endif - - -#if PY_MAJOR_VERSION < 3 -__Pyx_PyMODINIT_FUNC initoh2004(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC initoh2004(void) -#else -__Pyx_PyMODINIT_FUNC PyInit_oh2004(void) CYTHON_SMALL_CODE; /*proto*/ -__Pyx_PyMODINIT_FUNC PyInit_oh2004(void) -#if CYTHON_PEP489_MULTI_PHASE_INIT -{ - return PyModuleDef_Init(&__pyx_moduledef); -} -static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { - #if PY_VERSION_HEX >= 0x030700A1 - static PY_INT64_T main_interpreter_id = -1; - PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); - if (main_interpreter_id == -1) { - main_interpreter_id = current_id; - return (unlikely(current_id == -1)) ? -1 : 0; - } else if (unlikely(main_interpreter_id != current_id)) - #else - static PyInterpreterState *main_interpreter = NULL; - PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; - if (!main_interpreter) { - main_interpreter = current_interpreter; - } else if (unlikely(main_interpreter != current_interpreter)) - #endif - { - PyErr_SetString( - PyExc_ImportError, - "Interpreter change detected - this module can only be loaded into one interpreter per process."); - return -1; - } - return 0; -} -static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { - PyObject *value = PyObject_GetAttrString(spec, from_name); - int result = 0; - if (likely(value)) { - if (allow_none || value != Py_None) { - result = PyDict_SetItemString(moddict, to_name, value); - } - Py_DECREF(value); - } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Clear(); - } else { - result = -1; - } - return result; -} -static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { - PyObject *module = NULL, *moddict, *modname; - if (__Pyx_check_single_interpreter()) - return NULL; - if (__pyx_m) - return __Pyx_NewRef(__pyx_m); - modname = PyObject_GetAttrString(spec, "name"); - if (unlikely(!modname)) goto bad; - module = PyModule_NewObject(modname); - Py_DECREF(modname); - if (unlikely(!module)) goto bad; - moddict = PyModule_GetDict(module); - if (unlikely(!moddict)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; - if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; - return module; -bad: - Py_XDECREF(module); - return NULL; -} - - -static CYTHON_SMALL_CODE int __pyx_pymod_exec_oh2004(PyObject *__pyx_pyinit_module) -#endif -#endif -{ - PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_lineno = 0; - const char *__pyx_filename = NULL; - int __pyx_clineno = 0; - __Pyx_RefNannyDeclarations - #if CYTHON_PEP489_MULTI_PHASE_INIT - if (__pyx_m) { - if (__pyx_m == __pyx_pyinit_module) return 0; - PyErr_SetString(PyExc_RuntimeError, "Module 'oh2004' has already been imported. Re-initialisation is not supported."); - return -1; - } - #elif PY_MAJOR_VERSION >= 3 - if (__pyx_m) return __Pyx_NewRef(__pyx_m); - #endif - #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_oh2004(void)", 0); - if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pxy_PyFrame_Initialize_Offsets - __Pxy_PyFrame_Initialize_Offsets(); - #endif - __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_StopAsyncIteration_USED - if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ - /*--- Threads initialization code ---*/ - #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS - PyEval_InitThreads(); - #endif - /*--- Module creation code ---*/ - #if CYTHON_PEP489_MULTI_PHASE_INIT - __pyx_m = __pyx_pyinit_module; - Py_INCREF(__pyx_m); - #else - #if PY_MAJOR_VERSION < 3 - __pyx_m = Py_InitModule4("oh2004", __pyx_methods, __pyx_k_Created_on_Tue_Jun_4_14_59_54_2, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); - #else - __pyx_m = PyModule_Create(&__pyx_moduledef); - #endif - if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_d); - __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_b); - __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) - Py_INCREF(__pyx_cython_runtime); - if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) - if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - if (__pyx_module_is_main_oh2004) { - if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - } - #if PY_MAJOR_VERSION >= 3 - { - PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) - if (!PyDict_GetItemString(modules, "oh2004")) { - if (unlikely(PyDict_SetItemString(modules, "oh2004", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #endif - /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Global type/function init code ---*/ - (void)__Pyx_modinit_global_init_code(); - (void)__Pyx_modinit_variable_export_code(); - (void)__Pyx_modinit_function_export_code(); - (void)__Pyx_modinit_type_init_code(); - if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error) - (void)__Pyx_modinit_variable_import_code(); - (void)__Pyx_modinit_function_import_code(); - /*--- Execution code ---*/ - #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) - if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - - /* "oh2004.pyx":11 - * """ - * cimport cython # - * import numpy as np##cpythonnp # <<<<<<<<<<<<<< - * cimport numpy as np # cpythonnp - * from libc.math cimport pi - */ - __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 11, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "oh2004.pyx":14 - * cimport numpy as np # cpythonnp - * from libc.math cimport pi - * from scipy.optimize import fmin # <<<<<<<<<<<<<< - * - * cpdef np.ndarray[double,ndim=1] inverse_oh2004(double sigma0vvdB,double sigma0hhdB,double sigma0hvdB,double theta,double f): - */ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_n_s_fmin); - __Pyx_GIVEREF(__pyx_n_s_fmin); - PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_fmin); - __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_optimize, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_fmin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_fmin, __pyx_t_1) < 0) __PYX_ERR(0, 14, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "oh2004.pyx":1 - * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< - * """ - * Created on Tue Jun 4 14:59:54 2013 - */ - __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - - /* "E:/soft/Anaconda/envs/micro/lib/site-packages/numpy/__init__.pxd":1016 - * - * - * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) nogil: # <<<<<<<<<<<<<< - * """ - * returns the unit part of the dtype for a numpy datetime64 object. - */ - - /*--- Wrapped vars code ---*/ - - goto __pyx_L0; - __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); - if (__pyx_m) { - if (__pyx_d) { - __Pyx_AddTraceback("init oh2004", __pyx_clineno, __pyx_lineno, __pyx_filename); - } - Py_CLEAR(__pyx_m); - } else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_ImportError, "init oh2004"); - } - __pyx_L0:; - __Pyx_RefNannyFinishContext(); - #if CYTHON_PEP489_MULTI_PHASE_INIT - return (__pyx_m != NULL) ? 0 : -1; - #elif PY_MAJOR_VERSION >= 3 - return __pyx_m; - #else - return; - #endif -} - -/* --- Runtime support code --- */ -/* Refnanny */ -#if CYTHON_REFNANNY -static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { - PyObject *m = NULL, *p = NULL; - void *r = NULL; - m = PyImport_ImportModule(modname); - if (!m) goto end; - p = PyObject_GetAttrString(m, "RefNannyAPI"); - if (!p) goto end; - r = PyLong_AsVoidPtr(p); -end: - Py_XDECREF(p); - Py_XDECREF(m); - return (__Pyx_RefNannyAPIStruct *)r; -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); -#if PY_MAJOR_VERSION < 3 - if (likely(tp->tp_getattr)) - return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); -#endif - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); - if (unlikely(!result)) { - PyErr_Format(PyExc_NameError, -#if PY_MAJOR_VERSION >= 3 - "name '%U' is not defined", name); -#else - "name '%.200s' is not defined", PyString_AS_STRING(name)); -#endif - } - return result; -} - -/* PyDictVersioning */ -#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; -} -static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { - PyObject **dictptr = NULL; - Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; - if (offset) { -#if CYTHON_COMPILING_IN_CPYTHON - dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); -#else - dictptr = _PyObject_GetDictPtr(obj); -#endif - } - return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; -} -static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { - PyObject *dict = Py_TYPE(obj)->tp_dict; - if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) - return 0; - return obj_dict_version == __Pyx_get_object_dict_version(obj); -} -#endif - -/* GetModuleGlobalName */ -#if CYTHON_USE_DICT_VERSIONS -static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) -#else -static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) -#endif -{ - PyObject *result; -#if !CYTHON_AVOID_BORROWED_REFS -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 - result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } else if (unlikely(PyErr_Occurred())) { - return NULL; - } -#else - result = PyDict_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } -#endif -#else - result = PyObject_GetItem(__pyx_d, name); - __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) - if (likely(result)) { - return __Pyx_NewRef(result); - } - PyErr_Clear(); -#endif - return __Pyx_GetBuiltinName(name); -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - int flags = PyCFunction_GET_FLAGS(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { - return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); - } else { - return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); - } -} -#endif - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif -#endif - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = Py_TYPE(func)->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCall2Args */ -static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { - PyObject *args, *result = NULL; - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(function)) { - PyObject *args[2] = {arg1, arg2}; - return __Pyx_PyFunction_FastCall(function, args, 2); - } - #endif - #if CYTHON_FAST_PYCCALL - if (__Pyx_PyFastCFunction_Check(function)) { - PyObject *args[2] = {arg1, arg2}; - return __Pyx_PyCFunction_FastCall(function, args, 2); - } - #endif - args = PyTuple_New(2); - if (unlikely(!args)) goto done; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - Py_INCREF(function); - result = __Pyx_PyObject_Call(function, args, NULL); - Py_DECREF(args); - Py_DECREF(function); -done: - return result; -} - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif - if (likely(PyCFunction_Check(func))) { - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (__Pyx_PyFastCFunction_Check(func)) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* ExtTypeTest */ -static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (likely(__Pyx_TypeCheck(obj, type))) - return 1; - PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", - Py_TYPE(obj)->tp_name, type->tp_name); - return 0; -} - -/* IsLittleEndian */ -static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) -{ - union { - uint32_t u32; - uint8_t u8[4]; - } S; - S.u32 = 0x01020304; - return S.u8[0] == 4; -} - -/* BufferFormatCheck */ -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type) { - stack[0].field = &ctx->root; - stack[0].parent_offset = 0; - ctx->root.type = type; - ctx->root.name = "buffer dtype"; - ctx->root.offset = 0; - ctx->head = stack; - ctx->head->field = &ctx->root; - ctx->fmt_offset = 0; - ctx->head->parent_offset = 0; - ctx->new_packmode = '@'; - ctx->enc_packmode = '@'; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->is_complex = 0; - ctx->is_valid_array = 0; - ctx->struct_alignment = 0; - while (type->typegroup == 'S') { - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = 0; - type = type->fields->type; - } -} -static int __Pyx_BufFmt_ParseNumber(const char** ts) { - int count; - const char* t = *ts; - if (*t < '0' || *t > '9') { - return -1; - } else { - count = *t++ - '0'; - while (*t >= '0' && *t <= '9') { - count *= 10; - count += *t++ - '0'; - } - } - *ts = t; - return count; -} -static int __Pyx_BufFmt_ExpectNumber(const char **ts) { - int number = __Pyx_BufFmt_ParseNumber(ts); - if (number == -1) - PyErr_Format(PyExc_ValueError,\ - "Does not understand character buffer dtype format string ('%c')", **ts); - return number; -} -static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) { - PyErr_Format(PyExc_ValueError, - "Unexpected format string character: '%c'", ch); -} -static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) { - switch (ch) { - case '?': return "'bool'"; - case 'c': return "'char'"; - case 'b': return "'signed char'"; - case 'B': return "'unsigned char'"; - case 'h': return "'short'"; - case 'H': return "'unsigned short'"; - case 'i': return "'int'"; - case 'I': return "'unsigned int'"; - case 'l': return "'long'"; - case 'L': return "'unsigned long'"; - case 'q': return "'long long'"; - case 'Q': return "'unsigned long long'"; - case 'f': return (is_complex ? "'complex float'" : "'float'"); - case 'd': return (is_complex ? "'complex double'" : "'double'"); - case 'g': return (is_complex ? "'complex long double'" : "'long double'"); - case 'T': return "a struct"; - case 'O': return "Python object"; - case 'P': return "a pointer"; - case 's': case 'p': return "a string"; - case 0: return "end"; - default: return "unparseable format string"; - } -} -static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return 2; - case 'i': case 'I': case 'l': case 'L': return 4; - case 'q': case 'Q': return 8; - case 'f': return (is_complex ? 8 : 4); - case 'd': return (is_complex ? 16 : 8); - case 'g': { - PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g').."); - return 0; - } - case 'O': case 'P': return sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(short); - case 'i': case 'I': return sizeof(int); - case 'l': case 'L': return sizeof(long); - #ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(PY_LONG_LONG); - #endif - case 'f': return sizeof(float) * (is_complex ? 2 : 1); - case 'd': return sizeof(double) * (is_complex ? 2 : 1); - case 'g': return sizeof(long double) * (is_complex ? 2 : 1); - case 'O': case 'P': return sizeof(void*); - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -typedef struct { char c; short x; } __Pyx_st_short; -typedef struct { char c; int x; } __Pyx_st_int; -typedef struct { char c; long x; } __Pyx_st_long; -typedef struct { char c; float x; } __Pyx_st_float; -typedef struct { char c; double x; } __Pyx_st_double; -typedef struct { char c; long double x; } __Pyx_st_longdouble; -typedef struct { char c; void *x; } __Pyx_st_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, CYTHON_UNUSED int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_st_float) - sizeof(float); - case 'd': return sizeof(__Pyx_st_double) - sizeof(double); - case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -/* These are for computing the padding at the end of the struct to align - on the first member of the struct. This will probably the same as above, - but we don't have any guarantees. - */ -typedef struct { short x; char c; } __Pyx_pad_short; -typedef struct { int x; char c; } __Pyx_pad_int; -typedef struct { long x; char c; } __Pyx_pad_long; -typedef struct { float x; char c; } __Pyx_pad_float; -typedef struct { double x; char c; } __Pyx_pad_double; -typedef struct { long double x; char c; } __Pyx_pad_longdouble; -typedef struct { void *x; char c; } __Pyx_pad_void_p; -#ifdef HAVE_LONG_LONG -typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; -#endif -static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, CYTHON_UNUSED int is_complex) { - switch (ch) { - case '?': case 'c': case 'b': case 'B': case 's': case 'p': return 1; - case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); - case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); - case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); -#ifdef HAVE_LONG_LONG - case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); -#endif - case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); - case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); - case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); - case 'P': case 'O': return sizeof(__Pyx_pad_void_p) - sizeof(void*); - default: - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } -} -static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) { - switch (ch) { - case 'c': - return 'H'; - case 'b': case 'h': case 'i': - case 'l': case 'q': case 's': case 'p': - return 'I'; - case '?': case 'B': case 'H': case 'I': case 'L': case 'Q': - return 'U'; - case 'f': case 'd': case 'g': - return (is_complex ? 'C' : 'R'); - case 'O': - return 'O'; - case 'P': - return 'P'; - default: { - __Pyx_BufFmt_RaiseUnexpectedChar(ch); - return 0; - } - } -} -static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) { - if (ctx->head == NULL || ctx->head->field == &ctx->root) { - const char* expected; - const char* quote; - if (ctx->head == NULL) { - expected = "end"; - quote = ""; - } else { - expected = ctx->head->field->type->name; - quote = "'"; - } - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected %s%s%s but got %s", - quote, expected, quote, - __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex)); - } else { - __Pyx_StructField* field = ctx->head->field; - __Pyx_StructField* parent = (ctx->head - 1)->field; - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'", - field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex), - parent->type->name, field->name); - } -} -static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) { - char group; - size_t size, offset, arraysize = 1; - if (ctx->enc_type == 0) return 0; - if (ctx->head->field->type->arraysize[0]) { - int i, ndim = 0; - if (ctx->enc_type == 's' || ctx->enc_type == 'p') { - ctx->is_valid_array = ctx->head->field->type->ndim == 1; - ndim = 1; - if (ctx->enc_count != ctx->head->field->type->arraysize[0]) { - PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %zu", - ctx->head->field->type->arraysize[0], ctx->enc_count); - return -1; - } - } - if (!ctx->is_valid_array) { - PyErr_Format(PyExc_ValueError, "Expected %d dimensions, got %d", - ctx->head->field->type->ndim, ndim); - return -1; - } - for (i = 0; i < ctx->head->field->type->ndim; i++) { - arraysize *= ctx->head->field->type->arraysize[i]; - } - ctx->is_valid_array = 0; - ctx->enc_count = 1; - } - group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex); - do { - __Pyx_StructField* field = ctx->head->field; - __Pyx_TypeInfo* type = field->type; - if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') { - size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex); - } else { - size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex); - } - if (ctx->enc_packmode == '@') { - size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex); - size_t align_mod_offset; - if (align_at == 0) return -1; - align_mod_offset = ctx->fmt_offset % align_at; - if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset; - if (ctx->struct_alignment == 0) - ctx->struct_alignment = __Pyx_BufFmt_TypeCharToPadding(ctx->enc_type, - ctx->is_complex); - } - if (type->size != size || type->typegroup != group) { - if (type->typegroup == 'C' && type->fields != NULL) { - size_t parent_offset = ctx->head->parent_offset + field->offset; - ++ctx->head; - ctx->head->field = type->fields; - ctx->head->parent_offset = parent_offset; - continue; - } - if ((type->typegroup == 'H' || group == 'H') && type->size == size) { - } else { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - } - offset = ctx->head->parent_offset + field->offset; - if (ctx->fmt_offset != offset) { - PyErr_Format(PyExc_ValueError, - "Buffer dtype mismatch; next field is at offset %" CYTHON_FORMAT_SSIZE_T "d but %" CYTHON_FORMAT_SSIZE_T "d expected", - (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset); - return -1; - } - ctx->fmt_offset += size; - if (arraysize) - ctx->fmt_offset += (arraysize - 1) * size; - --ctx->enc_count; - while (1) { - if (field == &ctx->root) { - ctx->head = NULL; - if (ctx->enc_count != 0) { - __Pyx_BufFmt_RaiseExpected(ctx); - return -1; - } - break; - } - ctx->head->field = ++field; - if (field->type == NULL) { - --ctx->head; - field = ctx->head->field; - continue; - } else if (field->type->typegroup == 'S') { - size_t parent_offset = ctx->head->parent_offset + field->offset; - if (field->type->fields->type == NULL) continue; - field = field->type->fields; - ++ctx->head; - ctx->head->field = field; - ctx->head->parent_offset = parent_offset; - break; - } else { - break; - } - } - } while (ctx->enc_count); - ctx->enc_type = 0; - ctx->is_complex = 0; - return 0; -} -static PyObject * -__pyx_buffmt_parse_array(__Pyx_BufFmt_Context* ctx, const char** tsp) -{ - const char *ts = *tsp; - int i = 0, number, ndim; - ++ts; - if (ctx->new_count != 1) { - PyErr_SetString(PyExc_ValueError, - "Cannot handle repeated arrays in format string"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ndim = ctx->head->field->type->ndim; - while (*ts && *ts != ')') { - switch (*ts) { - case ' ': case '\f': case '\r': case '\n': case '\t': case '\v': continue; - default: break; - } - number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - if (i < ndim && (size_t) number != ctx->head->field->type->arraysize[i]) - return PyErr_Format(PyExc_ValueError, - "Expected a dimension of size %zu, got %d", - ctx->head->field->type->arraysize[i], number); - if (*ts != ',' && *ts != ')') - return PyErr_Format(PyExc_ValueError, - "Expected a comma in format string, got '%c'", *ts); - if (*ts == ',') ts++; - i++; - } - if (i != ndim) - return PyErr_Format(PyExc_ValueError, "Expected %d dimension(s), got %d", - ctx->head->field->type->ndim, i); - if (!*ts) { - PyErr_SetString(PyExc_ValueError, - "Unexpected end of format string, expected ')'"); - return NULL; - } - ctx->is_valid_array = 1; - ctx->new_count = 1; - *tsp = ++ts; - return Py_None; -} -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) { - int got_Z = 0; - while (1) { - switch(*ts) { - case 0: - if (ctx->enc_type != 0 && ctx->head == NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - if (ctx->head != NULL) { - __Pyx_BufFmt_RaiseExpected(ctx); - return NULL; - } - return ts; - case ' ': - case '\r': - case '\n': - ++ts; - break; - case '<': - if (!__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '>': - case '!': - if (__Pyx_Is_Little_Endian()) { - PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler"); - return NULL; - } - ctx->new_packmode = '='; - ++ts; - break; - case '=': - case '@': - case '^': - ctx->new_packmode = *ts++; - break; - case 'T': - { - const char* ts_after_sub; - size_t i, struct_count = ctx->new_count; - size_t struct_alignment = ctx->struct_alignment; - ctx->new_count = 1; - ++ts; - if (*ts != '{') { - PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'"); - return NULL; - } - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - ctx->enc_count = 0; - ctx->struct_alignment = 0; - ++ts; - ts_after_sub = ts; - for (i = 0; i != struct_count; ++i) { - ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts); - if (!ts_after_sub) return NULL; - } - ts = ts_after_sub; - if (struct_alignment) ctx->struct_alignment = struct_alignment; - } - break; - case '}': - { - size_t alignment = ctx->struct_alignment; - ++ts; - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_type = 0; - if (alignment && ctx->fmt_offset % alignment) { - ctx->fmt_offset += alignment - (ctx->fmt_offset % alignment); - } - } - return ts; - case 'x': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->fmt_offset += ctx->new_count; - ctx->new_count = 1; - ctx->enc_count = 0; - ctx->enc_type = 0; - ctx->enc_packmode = ctx->new_packmode; - ++ts; - break; - case 'Z': - got_Z = 1; - ++ts; - if (*ts != 'f' && *ts != 'd' && *ts != 'g') { - __Pyx_BufFmt_RaiseUnexpectedChar('Z'); - return NULL; - } - CYTHON_FALLTHROUGH; - case '?': case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I': - case 'l': case 'L': case 'q': case 'Q': - case 'f': case 'd': case 'g': - case 'O': case 'p': - if ((ctx->enc_type == *ts) && (got_Z == ctx->is_complex) && - (ctx->enc_packmode == ctx->new_packmode) && (!ctx->is_valid_array)) { - ctx->enc_count += ctx->new_count; - ctx->new_count = 1; - got_Z = 0; - ++ts; - break; - } - CYTHON_FALLTHROUGH; - case 's': - if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL; - ctx->enc_count = ctx->new_count; - ctx->enc_packmode = ctx->new_packmode; - ctx->enc_type = *ts; - ctx->is_complex = got_Z; - ++ts; - ctx->new_count = 1; - got_Z = 0; - break; - case ':': - ++ts; - while(*ts != ':') ++ts; - ++ts; - break; - case '(': - if (!__pyx_buffmt_parse_array(ctx, &ts)) return NULL; - break; - default: - { - int number = __Pyx_BufFmt_ExpectNumber(&ts); - if (number == -1) return NULL; - ctx->new_count = (size_t)number; - } - } - } -} - -/* BufferGetAndValidate */ - static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (unlikely(info->buf == NULL)) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - __Pyx_ReleaseBuffer(info); -} -static void __Pyx_ZeroBuffer(Py_buffer* buf) { - buf->buf = NULL; - buf->obj = NULL; - buf->strides = __Pyx_zeros; - buf->shape = __Pyx_zeros; - buf->suboffsets = __Pyx_minusones; -} -static int __Pyx__GetBufferAndValidate( - Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, - int nd, int cast, __Pyx_BufFmt_StackElem* stack) -{ - buf->buf = NULL; - if (unlikely(__Pyx_GetBuffer(obj, buf, flags) == -1)) { - __Pyx_ZeroBuffer(buf); - return -1; - } - if (unlikely(buf->ndim != nd)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - nd, buf->ndim); - goto fail; - } - if (!cast) { - __Pyx_BufFmt_Context ctx; - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; - } - if (unlikely((size_t)buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", - buf->itemsize, (buf->itemsize > 1) ? "s" : "", - dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; - return 0; -fail:; - __Pyx_SafeReleaseBuffer(buf); - return -1; -} - -/* BufferIndexError */ - static void __Pyx_RaiseBufferIndexError(int axis) { - PyErr_Format(PyExc_IndexError, - "Out of bounds on buffer access (axis %d)", axis); -} - -/* PyIntBinop */ - #if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) { - (void)inplace; - (void)zerodivision_check; - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op2))) { - const long a = intval; - long x; - long b = PyInt_AS_LONG(op2); - x = (long)((unsigned long)a - b); - if (likely((x^a) >= 0 || (x^~b) >= 0)) - return PyInt_FromLong(x); - return PyLong_Type.tp_as_number->nb_subtract(op1, op2); - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op2))) { - const long a = intval; - long b, x; -#ifdef HAVE_LONG_LONG - const PY_LONG_LONG lla = intval; - PY_LONG_LONG llb, llx; -#endif - const digit* digits = ((PyLongObject*)op2)->ob_digit; - const Py_ssize_t size = Py_SIZE(op2); - if (likely(__Pyx_sst_abs(size) <= 1)) { - b = likely(size) ? digits[0] : 0; - if (size == -1) b = -b; - } else { - switch (size) { - case -2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case 2: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { - llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case -3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case 3: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { - llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case -4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - case 4: - if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - break; -#ifdef HAVE_LONG_LONG - } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { - llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); - goto long_long; -#endif - } - CYTHON_FALLTHROUGH; - default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); - } - } - x = a - b; - return PyLong_FromLong(x); -#ifdef HAVE_LONG_LONG - long_long: - llx = lla - llb; - return PyLong_FromLongLong(llx); -#endif - - - } - #endif - if (PyFloat_CheckExact(op2)) { - const long a = intval; - double b = PyFloat_AS_DOUBLE(op2); - double result; - PyFPE_START_PROTECT("subtract", return NULL) - result = ((double)a) - (double)b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); - } - return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); -} -#endif - -/* PyFloatBinop */ - #if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_SubtractCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) { - const double a = floatval; - double b, result; - (void)inplace; - (void)zerodivision_check; - if (likely(PyFloat_CheckExact(op2))) { - b = PyFloat_AS_DOUBLE(op2); - - } else - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op2))) { - b = (double) PyInt_AS_LONG(op2); - - } else - #endif - if (likely(PyLong_CheckExact(op2))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)op2)->ob_digit; - const Py_ssize_t size = Py_SIZE(op2); - switch (size) { - case 0: b = 0.0; break; - case -1: b = -(double) digits[0]; break; - case 1: b = (double) digits[0]; break; - case -2: - case 2: - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { - b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -2) - b = -b; - break; - } - } - CYTHON_FALLTHROUGH; - case -3: - case 3: - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { - b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -3) - b = -b; - break; - } - } - CYTHON_FALLTHROUGH; - case -4: - case 4: - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { - b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -4) - b = -b; - break; - } - } - CYTHON_FALLTHROUGH; - default: - #else - { - #endif - b = PyLong_AsDouble(op2); - if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL; - - } - } else { - return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); - } - - PyFPE_START_PROTECT("subtract", return NULL) - result = a - b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); -} -#endif - -/* PyIntCompare */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) { - if (op1 == op2) { - Py_RETURN_TRUE; - } - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - const long b = intval; - long a = PyInt_AS_LONG(op1); - if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE; - } - #endif - #if CYTHON_USE_PYLONG_INTERNALS - if (likely(PyLong_CheckExact(op1))) { - int unequal; - unsigned long uintval; - Py_ssize_t size = Py_SIZE(op1); - const digit* digits = ((PyLongObject*)op1)->ob_digit; - if (intval == 0) { - if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE; - } else if (intval < 0) { - if (size >= 0) - Py_RETURN_FALSE; - intval = -intval; - size = -size; - } else { - if (size <= 0) - Py_RETURN_FALSE; - } - uintval = (unsigned long) intval; -#if PyLong_SHIFT * 4 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 4)) { - unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 3 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 3)) { - unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 2 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 2)) { - unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif -#if PyLong_SHIFT * 1 < SIZEOF_LONG*8 - if (uintval >> (PyLong_SHIFT * 1)) { - unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) - | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); - } else -#endif - unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); - if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE; - } - #endif - if (PyFloat_CheckExact(op1)) { - const long b = intval; - double a = PyFloat_AS_DOUBLE(op1); - if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE; - } - return ( - PyObject_RichCompare(op1, op2, Py_EQ)); -} - -/* GetItemInt */ - static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { - PyObject *r; - if (!j) return NULL; - r = PyObject_GetItem(o, j); - Py_DECREF(j); - return r; -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyList_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - Py_ssize_t wrapped_i = i; - if (wraparound & unlikely(i < 0)) { - wrapped_i += PyTuple_GET_SIZE(o); - } - if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; - } - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -#else - return PySequence_GetItem(o, i); -#endif -} -static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS - if (is_list || PyList_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - PyObject *r = PyList_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } - else if (PyTuple_CheckExact(o)) { - Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; - } - } else { - PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; - if (likely(m && m->sq_item)) { - if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { - Py_ssize_t l = m->sq_length(o); - if (likely(l >= 0)) { - i += l; - } else { - if (!PyErr_ExceptionMatches(PyExc_OverflowError)) - return NULL; - PyErr_Clear(); - } - } - return m->sq_item(o, i); - } - } -#else - if (is_list || PySequence_Check(o)) { - return PySequence_GetItem(o, i); - } -#endif - return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); -} - -/* ObjectGetItem */ - #if CYTHON_USE_TYPE_SLOTS -static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) { - PyObject *runerr; - Py_ssize_t key_value; - PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence; - if (unlikely(!(m && m->sq_item))) { - PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name); - return NULL; - } - key_value = __Pyx_PyIndex_AsSsize_t(index); - if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); - } - if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { - PyErr_Clear(); - PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name); - } - return NULL; -} -static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) { - PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping; - if (likely(m && m->mp_subscript)) { - return m->mp_subscript(obj, key); - } - return __Pyx_PyObject_GetIndex(obj, key); -} -#endif - -/* PyFloatBinop */ - #if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) { - const double b = floatval; - double a, result; - (void)inplace; - (void)zerodivision_check; - if (likely(PyFloat_CheckExact(op1))) { - a = PyFloat_AS_DOUBLE(op1); - - } else - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op1))) { - a = (double) PyInt_AS_LONG(op1); - - } else - #endif - if (likely(PyLong_CheckExact(op1))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)op1)->ob_digit; - const Py_ssize_t size = Py_SIZE(op1); - switch (size) { - case 0: a = 0.0; break; - case -1: a = -(double) digits[0]; break; - case 1: a = (double) digits[0]; break; - case -2: - case 2: - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { - a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -2) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - case -3: - case 3: - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { - a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -3) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - case -4: - case 4: - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { - a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -4) - a = -a; - break; - } - } - CYTHON_FALLTHROUGH; - default: - #else - { - #endif - a = PyLong_AsDouble(op1); - if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL; - - } - } else { - return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)); - } - - PyFPE_START_PROTECT("divide", return NULL) - result = a / b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); -} -#endif - -/* PyFloatBinop */ - #if !CYTHON_COMPILING_IN_PYPY -static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) { - const double a = floatval; - double b, result; - (void)inplace; - (void)zerodivision_check; - if (likely(PyFloat_CheckExact(op2))) { - b = PyFloat_AS_DOUBLE(op2); - - } else - #if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(op2))) { - b = (double) PyInt_AS_LONG(op2); - - } else - #endif - if (likely(PyLong_CheckExact(op2))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)op2)->ob_digit; - const Py_ssize_t size = Py_SIZE(op2); - switch (size) { - case 0: b = 0.0; break; - case -1: b = -(double) digits[0]; break; - case 1: b = (double) digits[0]; break; - case -2: - case 2: - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { - b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -2) - b = -b; - break; - } - } - CYTHON_FALLTHROUGH; - case -3: - case 3: - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { - b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -3) - b = -b; - break; - } - } - CYTHON_FALLTHROUGH; - case -4: - case 4: - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { - b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); - if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) ((PY_LONG_LONG)1 << 53))) { - if (size == -4) - b = -b; - break; - } - } - CYTHON_FALLTHROUGH; - default: - #else - { - #endif - b = PyLong_AsDouble(op2); - if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL; - - } - } else { - return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); - } - - PyFPE_START_PROTECT("add", return NULL) - result = a + b; - PyFPE_END_PROTECT(result) - return PyFloat_FromDouble(result); -} -#endif - -/* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -} -#endif - -/* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( - const char* func_name, - int exact, - Py_ssize_t num_min, - Py_ssize_t num_max, - Py_ssize_t num_found) -{ - Py_ssize_t num_expected; - const char *more_or_less; - if (num_found < num_min) { - num_expected = num_min; - more_or_less = "at least"; - } else { - num_expected = num_max; - more_or_less = "at most"; - } - if (exact) { - more_or_less = "exactly"; - } - PyErr_Format(PyExc_TypeError, - "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", - func_name, more_or_less, num_expected, - (num_expected == 1) ? "" : "s", num_found); -} - -/* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION >= 3 - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); - #else - "%s() got multiple values for keyword argument '%s'", func_name, - PyString_AsString(kw_name)); - #endif -} - -/* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( - PyObject *kwds, - PyObject **argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name) -{ - PyObject *key = 0, *value = 0; - Py_ssize_t pos = 0; - PyObject*** name; - PyObject*** first_kw_arg = argnames + num_pos_args; - while (PyDict_Next(kwds, &pos, &key, &value)) { - name = first_kw_arg; - while (*name && (**name != key)) name++; - if (*name) { - values[name-argnames] = value; - continue; - } - name = first_kw_arg; - #if PY_MAJOR_VERSION < 3 - if (likely(PyString_Check(key))) { - while (*name) { - if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) - && _PyString_Eq(**name, key)) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - if ((**argname == key) || ( - (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) - && _PyString_Eq(**argname, key))) { - goto arg_passed_twice; - } - argname++; - } - } - } else - #endif - if (likely(PyUnicode_Check(key))) { - while (*name) { - int cmp = (**name == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**name, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) { - values[name-argnames] = value; - break; - } - name++; - } - if (*name) continue; - else { - PyObject*** argname = argnames; - while (argname != first_kw_arg) { - int cmp = (**argname == key) ? 0 : - #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 - (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : - #endif - PyUnicode_Compare(**argname, key); - if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; - if (cmp == 0) goto arg_passed_twice; - argname++; - } - } - } else - goto invalid_keyword_type; - if (kwds2) { - if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; - } else { - goto invalid_keyword; - } - } - return 0; -arg_passed_twice: - __Pyx_RaiseDoubleKeywordsError(function_name, key); - goto bad; -invalid_keyword_type: - PyErr_Format(PyExc_TypeError, - "%.200s() keywords must be strings", function_name); - goto bad; -invalid_keyword: - PyErr_Format(PyExc_TypeError, - #if PY_MAJOR_VERSION < 3 - "%.200s() got an unexpected keyword argument '%.200s'", - function_name, PyString_AsString(key)); - #else - "%s() got an unexpected keyword argument '%U'", - function_name, key); - #endif -bad: - return -1; -} - -/* WriteUnraisableException */ - static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, - CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, - int full_traceback, CYTHON_UNUSED int nogil) { - PyObject *old_exc, *old_val, *old_tb; - PyObject *ctx; - __Pyx_PyThreadState_declare -#ifdef WITH_THREAD - PyGILState_STATE state; - if (nogil) - state = PyGILState_Ensure(); -#ifdef _MSC_VER - else state = (PyGILState_STATE)-1; -#endif -#endif - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); - if (full_traceback) { - Py_XINCREF(old_exc); - Py_XINCREF(old_val); - Py_XINCREF(old_tb); - __Pyx_ErrRestore(old_exc, old_val, old_tb); - PyErr_PrintEx(1); - } - #if PY_MAJOR_VERSION < 3 - ctx = PyString_FromString(name); - #else - ctx = PyUnicode_FromString(name); - #endif - __Pyx_ErrRestore(old_exc, old_val, old_tb); - if (!ctx) { - PyErr_WriteUnraisable(Py_None); - } else { - PyErr_WriteUnraisable(ctx); - Py_DECREF(ctx); - } -#ifdef WITH_THREAD - if (nogil) - PyGILState_Release(state); -#endif -} - -/* BufferFallbackError */ - static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, - "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); -} - -/* ArgTypeTest */ - static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - else if (exact) { - #if PY_MAJOR_VERSION == 2 - if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(__Pyx_TypeCheck(obj, type))) return 1; - } - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); - return 0; -} - -/* GetTopmostException */ - #if CYTHON_USE_EXC_INFO_STACK -static _PyErr_StackItem * -__Pyx_PyErr_GetTopmostException(PyThreadState *tstate) -{ - _PyErr_StackItem *exc_info = tstate->exc_info; - while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) && - exc_info->previous_item != NULL) - { - exc_info = exc_info->previous_item; - } - return exc_info; -} -#endif - -/* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate); - *type = exc_info->exc_type; - *value = exc_info->exc_value; - *tb = exc_info->exc_traceback; - #else - *type = tstate->exc_type; - *value = tstate->exc_value; - *tb = tstate->exc_traceback; - #endif - Py_XINCREF(*type); - Py_XINCREF(*value); - Py_XINCREF(*tb); -} -static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { - PyObject *tmp_type, *tmp_value, *tmp_tb; - #if CYTHON_USE_EXC_INFO_STACK - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = type; - exc_info->exc_value = value; - exc_info->exc_traceback = tb; - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = type; - tstate->exc_value = value; - tstate->exc_traceback = tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -} -#endif - -/* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; icurexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; - if (unlikely(PyTuple_Check(err))) - return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); -} -#endif - -/* GetException */ - #if CYTHON_FAST_THREAD_STATE -static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) -#else -static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) -#endif -{ - PyObject *local_type, *local_value, *local_tb; -#if CYTHON_FAST_THREAD_STATE - PyObject *tmp_type, *tmp_value, *tmp_tb; - local_type = tstate->curexc_type; - local_value = tstate->curexc_value; - local_tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#else - PyErr_Fetch(&local_type, &local_value, &local_tb); -#endif - PyErr_NormalizeException(&local_type, &local_value, &local_tb); -#if CYTHON_FAST_THREAD_STATE - if (unlikely(tstate->curexc_type)) -#else - if (unlikely(PyErr_Occurred())) -#endif - goto bad; - #if PY_MAJOR_VERSION >= 3 - if (local_tb) { - if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) - goto bad; - } - #endif - Py_XINCREF(local_tb); - Py_XINCREF(local_type); - Py_XINCREF(local_value); - *type = local_type; - *value = local_value; - *tb = local_tb; -#if CYTHON_FAST_THREAD_STATE - #if CYTHON_USE_EXC_INFO_STACK - { - _PyErr_StackItem *exc_info = tstate->exc_info; - tmp_type = exc_info->exc_type; - tmp_value = exc_info->exc_value; - tmp_tb = exc_info->exc_traceback; - exc_info->exc_type = local_type; - exc_info->exc_value = local_value; - exc_info->exc_traceback = local_tb; - } - #else - tmp_type = tstate->exc_type; - tmp_value = tstate->exc_value; - tmp_tb = tstate->exc_traceback; - tstate->exc_type = local_type; - tstate->exc_value = local_value; - tstate->exc_traceback = local_tb; - #endif - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#else - PyErr_SetExcInfo(local_type, local_value, local_tb); -#endif - return 0; -bad: - *type = 0; - *value = 0; - *tb = 0; - Py_XDECREF(local_type); - Py_XDECREF(local_value); - Py_XDECREF(local_tb); - return -1; -} - -/* RaiseException */ - #if PY_MAJOR_VERSION < 3 -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, - CYTHON_UNUSED PyObject *cause) { - __Pyx_PyThreadState_declare - Py_XINCREF(type); - if (!value || value == Py_None) - value = NULL; - else - Py_INCREF(value); - if (!tb || tb == Py_None) - tb = NULL; - else { - Py_INCREF(tb); - if (!PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto raise_error; - } - } - if (PyType_Check(type)) { -#if CYTHON_COMPILING_IN_PYPY - if (!value) { - Py_INCREF(Py_None); - value = Py_None; - } -#endif - PyErr_NormalizeException(&type, &value, &tb); - } else { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto raise_error; - } - value = type; - type = (PyObject*) Py_TYPE(type); - Py_INCREF(type); - if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto raise_error; - } - } - __Pyx_PyThreadState_assign - __Pyx_ErrRestore(type, value, tb); - return; -raise_error: - Py_XDECREF(value); - Py_XDECREF(type); - Py_XDECREF(tb); - return; -} -#else -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { - PyObject* owned_instance = NULL; - if (tb == Py_None) { - tb = 0; - } else if (tb && !PyTraceBack_Check(tb)) { - PyErr_SetString(PyExc_TypeError, - "raise: arg 3 must be a traceback or None"); - goto bad; - } - if (value == Py_None) - value = 0; - if (PyExceptionInstance_Check(type)) { - if (value) { - PyErr_SetString(PyExc_TypeError, - "instance exception may not have a separate value"); - goto bad; - } - value = type; - type = (PyObject*) Py_TYPE(value); - } else if (PyExceptionClass_Check(type)) { - PyObject *instance_class = NULL; - if (value && PyExceptionInstance_Check(value)) { - instance_class = (PyObject*) Py_TYPE(value); - if (instance_class != type) { - int is_subclass = PyObject_IsSubclass(instance_class, type); - if (!is_subclass) { - instance_class = NULL; - } else if (unlikely(is_subclass == -1)) { - goto bad; - } else { - type = instance_class; - } - } - } - if (!instance_class) { - PyObject *args; - if (!value) - args = PyTuple_New(0); - else if (PyTuple_Check(value)) { - Py_INCREF(value); - args = value; - } else - args = PyTuple_Pack(1, value); - if (!args) - goto bad; - owned_instance = PyObject_Call(type, args, NULL); - Py_DECREF(args); - if (!owned_instance) - goto bad; - value = owned_instance; - if (!PyExceptionInstance_Check(value)) { - PyErr_Format(PyExc_TypeError, - "calling %R should have returned an instance of " - "BaseException, not %R", - type, Py_TYPE(value)); - goto bad; - } - } - } else { - PyErr_SetString(PyExc_TypeError, - "raise: exception class must be a subclass of BaseException"); - goto bad; - } - if (cause) { - PyObject *fixed_cause; - if (cause == Py_None) { - fixed_cause = NULL; - } else if (PyExceptionClass_Check(cause)) { - fixed_cause = PyObject_CallObject(cause, NULL); - if (fixed_cause == NULL) - goto bad; - } else if (PyExceptionInstance_Check(cause)) { - fixed_cause = cause; - Py_INCREF(fixed_cause); - } else { - PyErr_SetString(PyExc_TypeError, - "exception causes must derive from " - "BaseException"); - goto bad; - } - PyException_SetCause(value, fixed_cause); - } - PyErr_SetObject(type, value); - if (tb) { -#if CYTHON_COMPILING_IN_PYPY - PyObject *tmp_type, *tmp_value, *tmp_tb; - PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); - Py_INCREF(tb); - PyErr_Restore(tmp_type, tmp_value, tb); - Py_XDECREF(tmp_tb); -#else - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject* tmp_tb = tstate->curexc_traceback; - if (tb != tmp_tb) { - Py_INCREF(tb); - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_tb); - } -#endif - } -bad: - Py_XDECREF(owned_instance); - return; -} -#endif - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType -#define __PYX_HAVE_RT_ImportType -static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, - size_t size, enum __Pyx_ImportType_CheckSize check_size) -{ - PyObject *result = 0; - char warning[200]; - Py_ssize_t basicsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; -#endif - result = PyObject_GetAttrString(module, class_name); - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; -#else - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if ((size_t)basicsize < size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - goto bad; - } - if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - goto bad; - } - else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { - PyOS_snprintf(warning, sizeof(warning), - "%s.%s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize); - if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; - } - return (PyTypeObject *)result; -bad: - Py_XDECREF(result); - return NULL; -} -#endif - -/* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { - PyObject *empty_list = 0; - PyObject *module = 0; - PyObject *global_dict = 0; - PyObject *empty_dict = 0; - PyObject *list; - #if PY_MAJOR_VERSION < 3 - PyObject *py_import; - py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); - if (!py_import) - goto bad; - #endif - if (from_list) - list = from_list; - else { - empty_list = PyList_New(0); - if (!empty_list) - goto bad; - list = empty_list; - } - global_dict = PyModule_GetDict(__pyx_m); - if (!global_dict) - goto bad; - empty_dict = PyDict_New(); - if (!empty_dict) - goto bad; - { - #if PY_MAJOR_VERSION >= 3 - if (level == -1) { - if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) { - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, 1); - if (!module) { - if (!PyErr_ExceptionMatches(PyExc_ImportError)) - goto bad; - PyErr_Clear(); - } - } - level = 0; - } - #endif - if (!module) { - #if PY_MAJOR_VERSION < 3 - PyObject *py_level = PyInt_FromLong(level); - if (!py_level) - goto bad; - module = PyObject_CallFunctionObjArgs(py_import, - name, global_dict, empty_dict, list, py_level, (PyObject *)NULL); - Py_DECREF(py_level); - #else - module = PyImport_ImportModuleLevelObject( - name, global_dict, empty_dict, list, level); - #endif - } - } -bad: - #if PY_MAJOR_VERSION < 3 - Py_XDECREF(py_import); - #endif - Py_XDECREF(empty_list); - Py_XDECREF(empty_dict); - return module; -} - -/* ImportFrom */ - static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - PyErr_Format(PyExc_ImportError, - #if PY_MAJOR_VERSION < 3 - "cannot import name %.230s", PyString_AS_STRING(name)); - #else - "cannot import name %S", name); - #endif - } - return value; -} - -/* CLineInTraceback */ - #ifndef CYTHON_CLINE_IN_TRACEBACK -static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - if (unlikely(!__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, *cython_runtime_dict, - __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; - } - } - if (!use_cline) { - c_line = 0; - PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); - } - else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static PyCodeObject *__pyx_find_code_object(int code_line) { - PyCodeObject* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { - return NULL; - } - code_object = __pyx_code_cache.entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = 64; - __pyx_code_cache.count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); - if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { - PyCodeObject* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_DECREF(tmp); - return; - } - if (__pyx_code_cache.count == __pyx_code_cache.max_count) { - int new_max = __pyx_code_cache.max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - __pyx_code_cache.entries = entries; - __pyx_code_cache.max_count = new_max; - } - for (i=__pyx_code_cache.count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - __pyx_code_cache.count++; - Py_INCREF(code_object); -} - -/* AddTraceback */ - #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyObject *py_srcfile = 0; - PyObject *py_funcname = 0; - #if PY_MAJOR_VERSION < 3 - py_srcfile = PyString_FromString(filename); - #else - py_srcfile = PyUnicode_FromString(filename); - #endif - if (!py_srcfile) goto bad; - if (c_line) { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #else - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - #endif - } - else { - #if PY_MAJOR_VERSION < 3 - py_funcname = PyString_FromString(funcname); - #else - py_funcname = PyUnicode_FromString(funcname); - #endif - } - if (!py_funcname) goto bad; - py_code = __Pyx_PyCode_New( - 0, - 0, - 0, - 0, - 0, - __pyx_empty_bytes, /*PyObject *code,*/ - __pyx_empty_tuple, /*PyObject *consts,*/ - __pyx_empty_tuple, /*PyObject *names,*/ - __pyx_empty_tuple, /*PyObject *varnames,*/ - __pyx_empty_tuple, /*PyObject *freevars,*/ - __pyx_empty_tuple, /*PyObject *cellvars,*/ - py_srcfile, /*PyObject *filename,*/ - py_funcname, /*PyObject *name,*/ - py_line, - __pyx_empty_bytes /*PyObject *lnotab*/ - ); - Py_DECREF(py_srcfile); - Py_DECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_srcfile); - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = 0; - PyFrameObject *py_frame = 0; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - if (c_line) { - c_line = __Pyx_CLineForTraceback(tstate, c_line); - } - py_code = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!py_code) { - py_code = __Pyx_CreateCodeObjectForTraceback( - funcname, c_line, py_line, filename); - if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); - } - py_frame = PyFrame_New( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} - -#if PY_MAJOR_VERSION < 3 -static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) { - if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags); - PyErr_Format(PyExc_TypeError, "'%.200s' does not have the buffer interface", Py_TYPE(obj)->tp_name); - return -1; -} -static void __Pyx_ReleaseBuffer(Py_buffer *view) { - PyObject *obj = view->obj; - if (!obj) return; - if (PyObject_CheckBuffer(obj)) { - PyBuffer_Release(view); - return; - } - if ((0)) {} - view->obj = NULL; - Py_DECREF(obj); -} -#endif - - - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - -/* Declarations */ - #if CYTHON_CCOMPLEX - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return ::std::complex< float >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return x + y*(__pyx_t_float_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - __pyx_t_float_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsf(b.real) >= fabsf(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - float r = b.imag / b.real; - float s = (float)(1.0) / (b.real + b.imag * r); - return __pyx_t_float_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - float r = b.real / b.imag; - float s = (float)(1.0) / (b.imag + b.real * r); - return __pyx_t_float_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - float denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_float_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtf(z.real*z.real + z.imag*z.imag); - #else - return hypotf(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - float denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_float(a, a); - case 3: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, a); - case 4: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if (b.imag == 0) { - z.real = powf(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2f(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_float(a); - theta = atan2f(a.imag, a.real); - } - lnr = logf(r); - z_r = expf(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosf(z_theta); - z.imag = z_r * sinf(z_theta); - return z; - } - #endif -#endif - -/* Declarations */ - #if CYTHON_CCOMPLEX - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return ::std::complex< double >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return x + y*(__pyx_t_double_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - __pyx_t_double_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabs(b.real) >= fabs(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - double r = b.imag / b.real; - double s = (double)(1.0) / (b.real + b.imag * r); - return __pyx_t_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - double r = b.real / b.imag; - double s = (double)(1.0) / (b.imag + b.real * r); - return __pyx_t_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrt(z.real*z.real + z.imag*z.imag); - #else - return hypot(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_double(a, a); - case 3: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, a); - case 4: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if (b.imag == 0) { - z.real = pow(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_double(a); - theta = atan2(a.imag, a.real); - } - lnr = log(r); - z_r = exp(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cos(z_theta); - z.imag = z_r * sin(z_theta); - return z; - } - #endif -#endif - -/* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(int) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (int) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { - return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { - return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { - return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (int) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(int) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (int) 0; - case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) - case -2: - if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(int) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(int) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(int) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { - return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); - } - } - break; - } -#endif - if (sizeof(int) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - int val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (int) -1; - } - } else { - int val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (int) -1; - val = __Pyx_PyInt_As_int(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to int"); - return (int) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to int"); - return (int) -1; -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(long) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(long), - little, !is_unsigned); - } -} - -/* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const int neg_one = (int) -1, const_zero = (int) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (is_unsigned) { - if (sizeof(int) < sizeof(long)) { - return PyInt_FromLong((long) value); - } else if (sizeof(int) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(int) <= sizeof(long)) { - return PyInt_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); -#endif - } - } - { - int one = 1; int little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&value; - return _PyLong_FromByteArray(bytes, sizeof(int), - little, !is_unsigned); - } -} - -/* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const long neg_one = (long) -1, const_zero = (long) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x))) { - if (sizeof(long) < sizeof(long)) { - __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) - } else { - long val = PyInt_AS_LONG(x); - if (is_unsigned && unlikely(val < 0)) { - goto raise_neg_overflow; - } - return (long) val; - } - } else -#endif - if (likely(PyLong_Check(x))) { - if (is_unsigned) { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - } -#endif -#if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(Py_SIZE(x) < 0)) { - goto raise_neg_overflow; - } -#else - { - int result = PyObject_RichCompareBool(x, Py_False, Py_LT); - if (unlikely(result < 0)) - return (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if (sizeof(long) <= sizeof(unsigned long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)x)->ob_digit; - switch (Py_SIZE(x)) { - case 0: return (long) 0; - case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) - case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) - case -2: - if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if (8 * sizeof(long) > 1 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if (8 * sizeof(long) > 2 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if (8 * sizeof(long) > 3 * PyLong_SHIFT) { - if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } -#endif - if (sizeof(long) <= sizeof(long)) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { -#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) - PyErr_SetString(PyExc_RuntimeError, - "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); -#else - long val; - PyObject *v = __Pyx_PyNumber_IntOrLong(x); - #if PY_MAJOR_VERSION < 3 - if (likely(v) && !PyLong_Check(v)) { - PyObject *tmp = v; - v = PyNumber_Long(tmp); - Py_DECREF(tmp); - } - #endif - if (likely(v)) { - int one = 1; int is_little = (int)*(unsigned char *)&one; - unsigned char *bytes = (unsigned char *)&val; - int ret = _PyLong_AsByteArray((PyLongObject *)v, - bytes, sizeof(val), - is_little, !is_unsigned); - Py_DECREF(v); - if (likely(!ret)) - return val; - } -#endif - return (long) -1; - } - } else { - long val; - PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); - if (!tmp) return (long) -1; - val = __Pyx_PyInt_As_long(tmp); - Py_DECREF(tmp); - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - -/* FastTypeChecks */ - #if CYTHON_COMPILING_IN_CPYTHON -static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { - while (a) { - a = a->tp_base; - if (a == b) - return 1; - } - return b == &PyBaseObject_Type; -} -static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { - PyObject *mro; - if (a == b) return 1; - mro = a->tp_mro; - if (likely(mro)) { - Py_ssize_t i, n; - n = PyTuple_GET_SIZE(mro); - for (i = 0; i < n; i++) { - if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) - return 1; - } - return 0; - } - return __Pyx_InBases(a, b); -} -#if PY_MAJOR_VERSION == 2 -static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { - PyObject *exception, *value, *tb; - int res; - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - __Pyx_ErrFetch(&exception, &value, &tb); - res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - if (!res) { - res = PyObject_IsSubclass(err, exc_type2); - if (unlikely(res == -1)) { - PyErr_WriteUnraisable(err); - res = 0; - } - } - __Pyx_ErrRestore(exception, value, tb); - return res; -} -#else -static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { - int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; - if (!res) { - res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); - } - return res; -} -#endif -static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { - Py_ssize_t i, n; - assert(PyExceptionClass_Check(exc_type)); - n = PyTuple_GET_SIZE(tuple); -#if PY_MAJOR_VERSION >= 3 - for (i=0; ip) { - #if PY_MAJOR_VERSION < 3 - if (t->is_unicode) { - *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); - } else if (t->intern) { - *t->p = PyString_InternFromString(t->s); - } else { - *t->p = PyString_FromStringAndSize(t->s, t->n - 1); - } - #else - if (t->is_unicode | t->is_str) { - if (t->intern) { - *t->p = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); - } else { - *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - #endif - if (!*t->p) - return -1; - if (PyObject_Hash(*t->p) == -1) - return -1; - ++t; - } - return 0; -} - -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { - return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); -} -static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { - Py_ssize_t ignore; - return __Pyx_PyObject_AsStringAndSize(o, &ignore); -} -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT -#if !CYTHON_PEP393_ENABLED -static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - char* defenc_c; - PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); - if (!defenc) return NULL; - defenc_c = PyBytes_AS_STRING(defenc); -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - { - char* end = defenc_c + PyBytes_GET_SIZE(defenc); - char* c; - for (c = defenc_c; c < end; c++) { - if ((unsigned char) (*c) >= 128) { - PyUnicode_AsASCIIString(o); - return NULL; - } - } - } -#endif - *length = PyBytes_GET_SIZE(defenc); - return defenc_c; -} -#else -static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { - if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - if (likely(PyUnicode_IS_ASCII(o))) { - *length = PyUnicode_GET_LENGTH(o); - return PyUnicode_AsUTF8(o); - } else { - PyUnicode_AsASCIIString(o); - return NULL; - } -#else - return PyUnicode_AsUTF8AndSize(o, length); -#endif -} -#endif -#endif -static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { -#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT - if ( -#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII - __Pyx_sys_getdefaultencoding_not_ascii && -#endif - PyUnicode_Check(o)) { - return __Pyx_PyUnicode_AsStringAndSize(o, length); - } else -#endif -#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) - if (PyByteArray_Check(o)) { - *length = PyByteArray_GET_SIZE(o); - return PyByteArray_AS_STRING(o); - } else -#endif - { - char* result; - int r = PyBytes_AsStringAndSize(o, &result, length); - if (unlikely(r < 0)) { - return NULL; - } else { - return result; - } - } -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { - int is_true = x == Py_True; - if (is_true | (x == Py_False) | (x == Py_None)) return is_true; - else return PyObject_IsTrue(x); -} -static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { - int retval; - if (unlikely(!x)) return -1; - retval = __Pyx_PyObject_IsTrue(x); - Py_DECREF(x); - return retval; -} -static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { -#if PY_MAJOR_VERSION >= 3 - if (PyLong_Check(result)) { - if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, - "__int__ returned non-int (type %.200s). " - "The ability to return an instance of a strict subclass of int " - "is deprecated, and may be removed in a future version of Python.", - Py_TYPE(result)->tp_name)) { - Py_DECREF(result); - return NULL; - } - return result; - } -#endif - PyErr_Format(PyExc_TypeError, - "__%.4s__ returned non-%.4s (type %.200s)", - type_name, type_name, Py_TYPE(result)->tp_name); - Py_DECREF(result); - return NULL; -} -static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { -#if CYTHON_USE_TYPE_SLOTS - PyNumberMethods *m; -#endif - const char *name = NULL; - PyObject *res = NULL; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_Check(x) || PyLong_Check(x))) -#else - if (likely(PyLong_Check(x))) -#endif - return __Pyx_NewRef(x); -#if CYTHON_USE_TYPE_SLOTS - m = Py_TYPE(x)->tp_as_number; - #if PY_MAJOR_VERSION < 3 - if (m && m->nb_int) { - name = "int"; - res = m->nb_int(x); - } - else if (m && m->nb_long) { - name = "long"; - res = m->nb_long(x); - } - #else - if (likely(m && m->nb_int)) { - name = "int"; - res = m->nb_int(x); - } - #endif -#else - if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { - res = PyNumber_Int(x); - } -#endif - if (likely(res)) { -#if PY_MAJOR_VERSION < 3 - if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { -#else - if (unlikely(!PyLong_CheckExact(res))) { -#endif - return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); - } - } - else if (!PyErr_Occurred()) { - PyErr_SetString(PyExc_TypeError, - "an integer is required"); - } - return res; -} -static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { - Py_ssize_t ival; - PyObject *x; -#if PY_MAJOR_VERSION < 3 - if (likely(PyInt_CheckExact(b))) { - if (sizeof(Py_ssize_t) >= sizeof(long)) - return PyInt_AS_LONG(b); - else - return PyInt_AsSsize_t(b); - } -#endif - if (likely(PyLong_CheckExact(b))) { - #if CYTHON_USE_PYLONG_INTERNALS - const digit* digits = ((PyLongObject*)b)->ob_digit; - const Py_ssize_t size = Py_SIZE(b); - if (likely(__Pyx_sst_abs(size) <= 1)) { - ival = likely(size) ? digits[0] : 0; - if (size == -1) ival = -ival; - return ival; - } else { - switch (size) { - case 2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -2: - if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -3: - if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case 4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - case -4: - if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { - return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); - } - break; - } - } - #endif - return PyLong_AsSsize_t(b); - } - x = PyNumber_Index(b); - if (!x) return -1; - ival = PyInt_AsSsize_t(x); - Py_DECREF(x); - return ival; -} -static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); -} -static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { - return PyInt_FromSize_t(ival); -} - - -#endif /* Py_PYTHON_H */ diff --git a/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.cp38-win_amd64.exp b/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.cp38-win_amd64.exp deleted file mode 100644 index ce1729255eecf1c9bf0240f223747cd1a93b2f20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmZuv-)j>=5S}DzRYV%`tqKtWR$|smE`(GRf~{b%jiHeuvQRF!+w}Aa+M~ z`Qks|zv8Pe`px|)4LD?GzWHu;XRMN-eofZ_c}p(-VH|4%(|=aq2~?-xKkLqRGW* z5!ll_f$regHE4|^viZbA z-{3U@h1M%P!Ws?Fv}c9mY~vks=IX-m4K=#D8rUo_>DRFrp-LA~o|DYuF9?W-Q!;rL i52<8U?-J~ubICNv4x~eemkdC*1ngO=bPsm(U;G0mB$B=W diff --git a/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.cp38-win_amd64.lib b/landcover-L-SAR/tool/algorithm/algtools/oh2004/build/temp.win-amd64-3.8/Release/build/oh2004/oh2004.cp38-win_amd64.lib deleted file mode 100644 index f721eee2b35b2214bc1c17fa9f7191dd0b392627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1980 zcmcgtOKTHR6#g=aRD(*eZWIb5lqMpbye6Z9l&MBEG)+R9uBS0m%`EbuCP-KAvScgxDHmx|?zm3_MLq?{{Nie;-+PbCt%R%@ppEWdG@ zR<&UpIxMTOna`hv({y*F8XTp@eh@Ud`yq8QF@@==mzTVc_yEfwT;RX1-T{HT_ zL44S~Ao|JZr)U7UOupo%+1oF=uNF5v2`CctP6~pWh&^SHK0w*V<>uDhc8h7aq6L3wb zOO0!|cdEeXjG;vsU@}7u>op!k1Z=y$}H8To^fBKASmPhv#+P|^F6xGv=w*8+Gq^${C9Gy+r9U{_rKEz NN-cEiHPrt(aX)5IcH|hoH=vm%$d22 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�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 A;%sF1VlBp^r@E zy&)()tt3n8>$7B!=-oi{VuyoXk6h5RlaU*zau-M*sz_oaOoQ!%`EfLiLU&kGqA@7QvL=j?ybPRiEsxG0Pa7!ayH_k+^IB6UI*-(348uPU>A1d>_ifH-SXNxUu>H%w$B$o%@;q<7r&stMrKhh zk2S+HG$GK|g3at?_DJ6arFjcc9y1t}nTNBzNmzBtzk}2`MM|1fQ)K+EFQSN<%4q{? zcq`HQlIT=`PJ1pouuIoTIh!BXB1W``{27Y2+)17pO~7CxCzjdn zH$indQ7s<|6U4g7*y$A5>8t_qS&Ddu zsvC<%7HwE(^Pm~BdmEMV*a;|Q@LrsG;H0262TYc~gOsL7Y3LxDHnWW5O{nAwLN7iM z=%au>oEBOZ<9Ke1h=Np|B30dnN|3^z5sNqB;}I3D{(xkzIi&W1dtxQg?Kc{9-vZsk zF=>#SBfn8m(M+`IzWHgsk+j`TsO@8bIs{hk2uP{`)9PmP{8UG5NPHk=vYiC|4np5q z0`xUNAEyNUnif+NQ2ou~C;1@sf#eL5UQ;N(gK*tRbpBliI@cg9VH|{u_kqK=P1Ql? zgO!dNK5Fj!9W}a(D1BQ2N)_EXI|k}SfYLQBJpT+ujQDAiGONK*jk^gsF%HNN1G)WK zOc-uA_%W)u%av99>MEXpp&}yX#pHzx$oCNPeF)la-)A2n%LVU#a`A}455Kt!OS0u< z{PwXVhw&;HGwvHnkHVheSgICJGPcKM5f#8fqSOt4l96_zny-aW}=?*kFmp&)A68D1Oifn>o6R~W?e;*M&Y7U5Y zJ%F=9^l=y62L~!(0emqbP`OJ{DVrFM2FAt`GjPegj2|(3>I8`V{X}f655yWlto=qb zS`@%B){XXy$RYDasq4*B0j~;b`iR#J>iRy#<(fO$>S}IvosYuSP+`&@#TpF$9&)N0 z4xqHlzdwrm2Nm~00LATlAZK&1pk(<^D&!zSMKV!MR*nMZ1B7{h12A_2b37SHSfH<- z-DM5N*t3cRwnPF5)yXK|6s$nLHXpyg8fAM%n*>8{!Q z$=Uqb+5ELup3lkLp{_`2L21>|7j_~61lB-~XrX{Do^|JS(S0?OQ0<3_eoYJLHywgc zPRMAS&sDAb2BBmPSM1sDX7(j>}C;u~|U+Cm}65 z14vbeadw~#=gLc0xL!`3=)Dd#e(vfnF3cMU{05ariAwZBQ2BQsRbx(@bJb|JQDdDH zGx0RwJw|vBEe4+Za8>0!(s)#515Itc*8yt{VJ%(?tOt%zb>3TH=>~a8lHBp;xFVnP za|L`ah(q5}-oKR3DCM(C`T3=~Z`u7=mAKO@u#GwURN*^S)SW8) zr(*vsyAaX?vKS?E-#|E?pki))8pS*_gtKWVB&S!Y=q-)?X{CH2jOYWh$)K*07#7(| z*EgVvPZE`7&w|QFLs8kv-KgvV8V@cI;RRyu0@1iYr+Jk z&QC#q+=-m+1BVHJ8eZpvRn01sw4@<@tZGGAPZQS4&A_@ESfell@%RFSC99IcQLF^e z=W=F;A0ukcMaJ|v#3aX|i`Nplr?-IIs8L)-d-H>_OSw#ub0E}lo_&UhZT=j@{t04! zs1d#db?c*Ay09_;sb!#ctfHoG{NTe^zC@epOINHS z_ujvVjQ@L(SvZEXzr&u&#gw&bg3CXJzqdfVzd(GrKzxL58mLIpHk7`iPj}V9sL(p1 zbpBRQ+67AO=RiZ^3|BGN_eV-b@w!nwf2j)cGZ#N4Nu3y0(z-jz@DiK_=~_=DANUz0 z-!I{8G}`EXvWVX^LOd~ocOA*|Z|gvrmLF4H;BC`Hh5J{9`6hhG5dBtR% zy-~{Fgp?n$(2&3CHrY`E`0hTYtFwJjN3qDSNsQLcYy3f^kY{H z(pEX$Z<5pL(F?^f3&pVuMgN5&|ITz(t)-Zg744NgPh`K|39{46IIBTz^DtRqbpp$2Mhb-hLEEFZ6d3TzoTt8~yWfDF<4J%ZxtLev4(-(;3bGtxtD@e8%a2o5Fu|V{w zQt{(dzGxvazqGoIIIK^MNO=Pigg^H&$7Mvs!%C!0jcU0S z)lF`A&O*Ky(I5{SGBb(|NNCSEzFH=U9zM3ZjlBM`dXwxxXgZm8K~D|aie~J2JO)H; zEurN7sGdad?EjX9vt?Reokvj(%8&xCj0Q8K!5+44maG;9CWo+>MM3WIR03VX+9%=U z9RA!pPQ-5R%xGBJ8l;@9BS3Fz6qv(5 zrC0lrsKhy(xdqi@v}%5wRIWBWN}mkUzvrPk9s)KPG6#0q%8GSK`oU{e!f zXUsE+G>_?RuS5ghlx@FimO3c_HqusW5>>y#7{LF;DJlys{dkl~C=5bNj{zqRE(Iq@ z(`j;`8`_yV4fL+u2Od(&^+)F#LGN8;ydM2^H8Kizk>XjS=8s@`1_h{*OIKf?Nzv^= zqI-=Yx)&6|Vc^4le#}t8lk{=m-oF|ZtAKvj=rJ~dP5TNuhojdlfn3+3K+cA#0<*@v z@o6rj&)U->TrnKtJ70}04?Cj>S}?QxV|1bRuoE*l9GZ?}62xV+b(zj&XwsQ5(R3k} zn`%hAmQ)K3;#oyduw>L2tr}tsm9Ocbk^EE}tp#K+tFu35-<%90*GXocqT1GoSjc3f zKJs&jeb*c8yR0XT0Hwk5SmZd=X$FC&O_@2lT$@>qr3~^)73o67M%N-e(N>BxPK~JW zt*SAjdm1w{>w^ZkFBpdNOhg(3OYwXeWac(mueDxdnhCP==+k~ZiNPyCD$n(dS3K(# z|MFtSzI`luP_Fz+;VQEq=$zfA+DQW~8aH}P%~?3bpRJcIbN}uSx9qu}Gar>pODj@B zmC;~KUxiSU8rp9rMKlrp#)F#hu=<&ktN*6W_*-?wbnxwV#kZ5jV-}GDZuIn>dW!oI zQbLAOB%4onR-4QueRvm`>Ap10X)Qg_pG5NANapNe#p^o77Vw%BkcUmI$O!&Gr3}%9 z&xnSO@&jtq0|*LfPLfwo*Kj>CtnZP;8x-T~^r%ZscOdC=tFHc01w-HctTJPI(uQ=X z&FiR*9@SDFpeb*JK9D`^A-jZ0ML4kKOPIz`u|9ePJ6DxNF=3%5-=Kzu`chr`JtY12 zg2(htp+)I@a;n#}bfGM(WEKy5-LN5`?6vYR_E~~4)NPs?n>&W$xL>Ev*)vA}Xw%!0NKSJ* zFE7pQ&8i%I3LmUl%E@B`r9_rh&(vm4o-lbz&14)JE3Yh>j3o(5GK?Y*8z=2hzp?(u zxmBIZoPD2N!XRzXh~bt(ID4~{>|Ko{7*-&@GAu`YUZFlulT|F(#fng)rn{8tHB4VK zngd!@b5t9q4IZWqAE6B&2BDD?z$w&056TYW>|TXTV?U#}4e3KpeYPE#tpn1t?ZnEz zFxyrg#geH+G!nq^K%q}5?HE%JVN`h7SH;j<&0!Ubt2WL8K@&K@K=j~bG5mC8tx6Kuj+0jtb> zSl2n9s>lBMI&=1r$*1&2HBV|Xyr+PCQTO|r0a4w2rYjM zEr+wkrdx;X=F&F3_7Lm|d2%~#X5-7-DTKr7kq+Rc0N26GHN;Ez@-mvKY0E{c##Ak< zHU>)X01WTPWz`;4ZKqhp&K1_!Y-VRq(i3-EGPCDsxI$1heIRP4^F%j>X_!4BMdl18 z35{B+0p?tXd4RK(W|lbF7;<4q-{a2wZfMYl@3q$>T)2ZEU8=B2)MyQsEop*njT#n_ z9%x)22x`el3=U~&9}Ob0eG;rL5Z^}m4^ezCvQ1GW(+;95#k(uzd&Us&@38z)wndY! zZD2U!li}b?SYIvFU>Be#cr-D{?~0wnv*!=BBYbTx8ZqCa0kW|{hgLn>#NsJc;W zGsj?dtD!kEGtTe0LTV%nu*?^SgDPNe|GDc1GaMyqh258<4~a9;v#+3MJ!}qCu?z(Y zBvAk34J&$+8cNdwk}>938j7*>szkiBXA{0Yj9quKjoas_IqzRej!D0FCdcj%XfbOF z9M-Y^h%cEo%*eI*nj8{$Wi~!8Zzjm*kB1e>skbf`i!iK#X^20j^n*Sg>#z(qg^4S> z?i{ryGR%_KRkytcZosC1L8qHo@9GKe-=}3br6&0r12f`T>)tS$|ADOZ)ND_UIg5_n z?eUpbGVX_9y2`r}EDMDd=)R4z7Zx2jwsK+xI>7LMxVHjD<>q>4--FyABDY|_t3jlz zDJ|uL%}d63d(SSQfwA!s8r*MUSmSdw-l*}2#+x)A)p!ht8#O*p;|Yx?HJ;LVv&QFZ zyhY=!8gJA1DH=ajqbLHm4mJfdrH0pZ7}F+ktFm}o%?VY>daOPM9!L9v!=vsEj^4T8d?u^ z*jdeTo*IJ6+ zMfRUyttvw!_WN*#R4UAjwJ>Krvi&jHO)IVVi*87G*Je(Rx0N)vmeYM8DIf0qX#Ym< z2*J)t*DC6Zk_{s3l}p0<9Wuc)nHH#+tDJ$T~2ejK`ST;)U=9fa8CWOGJ0 zc7ZDUL2~X%r8E3N%umrw%VHcz@uz69eTAwB@y{PKm5RYX&Th@jfVx^3?B1ZqBhl@ctW$TiX#FTK?nK1t55wlf%a-&LQXYSvVMRp#na59n3~)KFAv z8}W0ygSnm7;N)KU5!pTLJLTb_YdTD0|3ZDP@UXM8{q6d7Fo=Lch#t;Cs9f#4m20_N zt4*IWZN`Mk$>qTRNtYlj&x*7Z=AxLqV+RSwT7$C-v&Gp|)urRd{}ti_A7bys-qWR%u zIAtvLe>JqMKLg!Z$(x1-;r<3(Y|;lE_*z!-7a1Vf>FEKMZ17;Ht9WOu2DCCNIJ`&7D_F;96*Uc!{rNrHRlK^^7+^YX;>I`?Ss>_0S4*L0jVjCF;=$}XTN0UP-@Sdc&^K4qA6&lS6}Y#c)WLYq#5XIZ-GO-&l01R5h> zszP;N){qX~L(c9|S%@9Fz+2fdLS@PF^fyQ0G>Qgrydo6{VU?g`wWELKJ|Ab_C^WSf zHrQ%?c-WMp<_u^3k-EHdHdLWzl~|XE`Re_8oV8lw8+(e~O<_fVr{VVdLuq>4m}7)5 z>ApA>4FsisGA4Wcd01^xlKk-SI~unC(`uesXKWlopx}iY8xBP3HDF$)^Vq|xPJ-ZJ zy+a1ybiXf>;aA;5&m-7E)gIhXCO3zzI>ntjf@y(7B1%hOU1F0MiMyo4mS->UO>x}) zwS8I;-9Kiy$5n8-ULZvov>!`ibGunx%bH!@^rV@~b^RKv4x;>kLMM^Z{Q_2zs>vSw z77aSCtdnuJ8$kt}t;!y`*>uZFJ0a^Ze6!Uv4w^a5xD|h~&h9ttb-1aONrRs*yXITP zTXRqiRs1(K>t;I(uzI&A#k9a607Ml@-5Hi40jfwtd%0(q(>gd){c01Uv6kp~?DCre z{UAp78L|;eGbv&#D{IB!VXKU-gLHso83mnGL{o`2i0D!Jn04RR3tMG4Yffs&^k7^B zPMwKD;7ra~JpjvCIk-<6i77L#--jrNx*Bg&G2qXV)mx+Ne%)8ltOsPMY8q^IKS0Gd zgtAIMAEloyOMkPY)<`Q2&K_4q&{i!5JvI%5+l`@@;_UuR?%-&?D%fB)%;$`jX=Mn# z3m6)&%YKG7>uRdQ$+74uIL>5b$W<9m?J1QFEl=?uxOD|>$A)2!8|u$g#Y0qWvQ%*} zf^&YzZPd-w`tA)G>ZRK7&FJcdVgSyQy!n1K7TD9vDl5$i>lxF~(YID6R#s1%QcnJh z#fDAzHBFCFz;GuhO4Vu7EeGd=rhBKE3?B_m|K`x)=++Blx30?e@@DIX(!Xejd)Owl z1{*<@WwOHaz)is-ifM2%&esh{7p+V^;6KHUtdyZ9#}WGrB|&3FyFDt?s zs|J5l+>o&I^gef2nSl@`$#NO3YYyhWBgJo9(@~_}rIev=6d0_WPvrp$5;NJn2yDJgR&A`+IHf47b#-R7 zq!TB*S{}BdC>m%nI;MxNBw!la*d0^;LQocGPb-xtohkZN5Yp2Gg-Y%ew}2M`_fpcL zT;AiVd(~#3`BzZ$+oVJz3aTsuGtJynr?Wp-A|26M4a#bdx518!qKM>}(dHhG{cUfC zD3ileZWz1*vCGSWqtWyc!aK;>BdP)ZHiQyJwM282Y`zQ?NDecW$CfyS&sBz^*!{qb zv>1GHs~B?0{#k3pLy)dE_AbVd!q^Xek%tUts~&7rGq9A|j7@nDyU3wf2pScLKinFX zrlot&I~b#ziy&#ba;D{!aqEYER99ELw4Az1ay^-*7Kw#A4y6|;oJilx&~P9@cO{u} zE8~|yhqJ+sZj#dSPE5Dmun0ZuRbwKieFq~5fnrPW=V3F75hREM!eKo)!Pw>C>^Rk? ztU1qdx#NDyT)$ zF;2tYC&JWp5f`jQp}>1@ddaiA_lIT=JhKg@C4a#W<6*bJRW&^@ubHlFPj8@X)s+ut zn`}5%^%v$8ci#-tfkG)wmeC26n=eWW@4ivy8LLGjntjI+>l{y+BPv@|3VS z4ZRPB-z;TweQDAVPRJ)@wY3OQYQ)um;pRL{7fQhzRmqK-VS@2DUf5PpVHiz859ooT*Xnd8!WGHPXEl2a*ZJ9gEm>a6~czIKy-+_tY zHp%&x-Lff-uP@jbl^#|m&6&(-afsMh>_m|P!P*T^m-|xHD`xbaabU-60R=6rkR7yN zsXVR}Q;vV*gaK#wss12Yfwo8dn~VdpNI+9h*eUw?ZaVyiieMq6MZpM!xT#P-GD}vX zIKfU;RME>+X{q@$0uDUv4@^;=9Ir$3svyTwh%W4@TjKhzdOux)+$+~?nXKSgOo*9uSPX& zNj*gKy!84TcFPQ3o$?+Wsx;9CM_19G^z>RMhR2NMmo^1s6Rw(;PD36xbTT~~10p?{ zlSlp@+1$a7v-9qU<7HPC2Qo6IPr0RS%$@_(?0Jpd6tVleR~hQ&bTw9uTN=zUvk{WE zO1AXwOxeLVDB^AM!(&bG(5jw>qNJY2W$UmljBwvh4?o-|DR#AMLdkAhmKjZWk_=?B zC=nW!K4+*;*IgiB_oGY%5{$?=Z()wS^Yt+e;~}$=QZ-l<%?iY9gql>;hT-y{7>|F* zCiOIDKdOly9%?zt!Pya{ul0G@eq({Nfp+ZKeZxD0J-1}&C0N5o)7AJU&Gdk5!R6T= z8FLyd{VT@6LK!e?o~SS*@Jx-^2F9XWhZkhDXmc(S>jZH<=hzC>mZWVfs1aUiU?^!69( zCxIS8`vtpDwIAWG*@H_?PJ59RGD2D**v@sX>u%eK*>&}>8e>*6$3>P;S!BsF3czapw>@CNYgimJ6Z)EHUYbN zGvL*!4@6Qv%XVIOT@F2L?0?MtMP{y!2hVUMML%qS&47@;$qCe-Q~~4lM5);T|60Mzb-0OOoKWzv>PfmQ*Q{$) zHT@8WqqJ`#e1T+}E}%9sTNGw1Qq3Dv&E!VaZBuRa!GkvXz{760TOoPaJ2*!y^{`pe zNvfnz?6)6QIL+7|b`RFJ`rxX@;glp;S*CjDb|iHkH0WWsB5jf{9>=7TUJ>t5e7Op# zwhLwtn}=lGyh-D3RJc_|ogU=Dg$VJ!qsjkF!2;?|XDwWBIQ8YF7B)9O8_rPLkII7v z>jC*JmSU1AS|w6$xhav#?K0U=Z529O1Pd!I3ipG)^2u1@x<9kGf78(`WdE*{)Al`f z=E838-K1?4tSpCvIWgLTIaIbrldU9cOOAd0M6a7oz=RItU9bFDKKo@b0>u zGrpUV;c_mZ+4fxsXC4K!y7x2#Stir@WaR`p9bNvMoCIbLqdL;rTgcxdU=IE`yHhcm zR$JIYvY3*+OFJ4ryG#w#j#ts?hcC%(@T$a|ZR#y~Z+9fD+{IIsHlJ3c z-;5H}PaYfRJ30FzyHf@avK|h^(Tv%~ffU-G)8tUmw`vR8Pp5MuGpG!~7AQ(MIYW+I zt5=A#CzNwT`XtR50qEouB=bcj<8)am9dV`0&^r@#&hAh}k!sNQ6{J8y?-|aL2{pTE ztKb%3qhqn5Y(&^8x6EzOi2nwE-FIYk-6Y(Q5{^gO%taW*Z@w*i;htFt={CyMCuuE6 z!Bt6;5oMvAR)jkbWZ)GpH$@yiu<_?%A7w7ZrcIeR5s9=A!ymp6nAR)G9MSJ;F>4V4 z{dZ6c&bBM&K;>zJl-h*lE}aYC9nxWp7++#GhsY>Y>0L?cb45xY)q}NR7IK_jsj^U4 z$k6nxp1@7HDg&KPYVEK~ga9Yi@3biwu4_(puHOVXJ10e8Ln~noykf*0r z{NTSFQr*>AGb_!gS+nXUv}q%1>psAo*E{U)e@N+L(&;YEqlW0J3nRLYgm94)DM_~{WgW^;U2-w%@rkU*D#bn;*ZR&u1Dznw zw!%E@5haVZ3U86R7Q?8HUl&o%eo#dyn_>9yB1K=Rs~fY5A%ZmJ)QQ3_mKu zEiO#nIw9B%jk{~acKXGw40HA*GH1UgbG92IC~!y%2eb53S((ukIBUgOz|o(*`{$dp z%`5k;4B5%FboFs*96Aqz8K04)eUVl+oyH$+K_rUp^U6o znN$})mVNXuQffNPj;p4}~ocLXaj|uxNGf9Q?1tnlZ;kegXFJeD<1tpSrHhea3;9P~}&(akG>r2dCoS5vcOFvdX`i z7f={ch{ikb~qS}&Z{iPO?0~W zoruY6t7Knl9DHvLxEr-z<^zk2Fb4M#9phetE!pM_EmgLGj9_P_+koBKXvo-d%{Uq; z*xYoUh7NuS*bGwkU=q^xRy4VK*dUXC)O1V;M&Bk?-}-vC`0;^|v_s*RBKjPhF-5D} zmE0LY9(r`N!G_;Z|Lv%M9vh^`z~Xw5iIp>E;1qBAS`nOTyenfLgW-Yct% zvbv=&TJp2xbi8=J`I&EHqKPV#t--v>2%o*c?YSxR1KngqgZ7IIH3AXO2nwiE&HBvWJ~g zgb>GoL2wynBK&z+FOy(-Ox-BerW4|9jk2nz=`nqsFQiUXEy~&w2;wH(Fx`2sPxkH5 z)N)tAec^aohhzveJWTT1%|JayfT@0OLJj{zJ+}irt6V#nn?uN>xcUHkcL(wa7E^U- z)Nt;KrGbz(OsA&`{tFG z#sopJc)Mha?#bTzH}@UO{^S9Xv_b1(KMzfj@8wqT7Ju%i(V0z+>D}85?@N1sq(5u! zAVU_$Mtu0%)j2}nKpu*bcslZU*tfmXj36z9?~6m9LO8W4e)!80_^6DUgeXem42jeX zEoxP{sMuv{Abcp*OL@tRiW!xYDiF9n1F8EGc@%J^Dqu2&-bJwAZU)qt+w>Ibbfzq7 zX%U?P!1s~V@HI{iTp@ldWzSB}Eh-Tmu8vU>`Fm1+tr$CMcGLrh{(^1do*Nne)aKFU;+nfC(g z))<{OxB&GOY_Vb_;@1AltvzxYI+7Mb7owM8q%4E>s}Bc*%J*zsFLMK!a1n^RPfB}k zGME2hh|tB7Nt-Exgd|6P%+_|B-o0+Jp%AMP#EmaUm`Z96l+dF0|hc$S^a> z%DxQQ^VscD!%v@40+mkJE9f^X7$+J$Y^nXWC1+b47yi3{N-=v3xZ|qHFinllR?ca< zdGT^;X77$MGIYgWCznKCf$TU6tACI)(-l`tK_0zhfN4 zG;QIMm|iXWuaXpr8FtXYPkb|N$&jB|u=CPf%JASxeqI+}Q`?8G^8y;*OZBG;!<&Net1D!YH>pkT&AUP|8cd zt7Vc`%M}MmQ5m=DWa}!N;-dD@t!DZFvuCJ>6;xsgqr0K5Qx?ONNmvq1iR;^9_&^Nl zI~rz}WfpC$+O0*0=tBc!384CPuUS|>Vwe6rGZWn1u5XX+kv++pLc9B?v@?Zv8BA*P zx*({$8FVt$1(B3>FH&{S8rYaK>D#4xBTy@SQJBXT8}o#2*V4?Eakn~6*cnH|$X$Pm z8sG9G!!vNlm|;*|uMDb@otBSt#jQ{*)(W_f#?-9*Zl>LN1!Uj`DFeke#BA<(*rKv4 zYfD}9k3Kav7iW)0m(!XBP91-vjPy3Qs0FKSFwDF9m|rW>zqC!!^>kiB^(@99t|Ge_ z%qG2bqoJ3!W*4n*kXyIh+!N%1%dGoG+tApXSIDfN} z=JR`5j9;xMX7a4dIX)XsJ^;Fh+qk$CQEhaUpnicMn&e?2xYTi^F&W6()44?za$o1c zd7vP-l8M4FsXijud!qk!^?^-q?vBfoibIbZ5DC{YR#wbh{VPU#ld)jRTN3qQf3V)? z4MgWBy-i_%BIXT8{gLMSfHx+OMhs|Rx$O2DMqiA`WzW?x*Fn+{96;AM4#>Q}QBEbu z^E~o+w32Dl5Fbmff?W0jASXK&iHdn~15luU9KwNP$4Rd&!%JnD_0d6EW|6*lSk~_) z6tHi)$iiqWRTw0{6$*a^X?-%%!bzEo`9QxJu~2U(a=!Y1UCr12uM2ns1ss^&*2yy` zPAoLOXMr}pg&Y%f)mccP&UEEwp)Z6Wv1FM4LAtHSvg(_b;&PU^W%`(J=j`CLqDe?{-6^J5_W{@eQ zE`=8zT~y~ahHujQ--mBA@(geq;)VLnFNLXCp>YpLE}IV|k2Z7c%*kcOm~R1O=KqLq zn*I?HO%3-p(B3y)TGnts6={7k((H%(Y5#{cT=0KLdl6_KnB79lAYZNe`w{i>1YWos zqVS}biKo0QFPGuz>PZ*R*Lw#H)TdnIp8sh_}KLcQi zAv5y0_S7(Ahf|t1Al^zs2NYLV3Y0f~kEmrF*BmPl&|QUvOW${xU?p3{@|~)XQ-7Qlwsr)yr|}WrTVesa}p(FDIy%6V=No^)gz$ z)M`x3(Gb&#$rFvwBL?IhC+o}kG|o9#OTY5mxeWPSxkfl$F20SxL@0jb zSB^Y;oQu0e>78y7&BaB`kP^)46s4@;_bHSnzqXN!Gm|on4n@hd(4exhknIDF0S>%5B+|#Ty_Ti&~K*7#pWq~=sWVc*gQmE z7z>bGT)RNZ&A4(wmUa%M8*8Inb}pqGt3~=!LM~R3X$VDto&&MjO!{ABMYZvcAEfGEm1fl))Yu|8xsKUBO?owzEmTD zQv@A@Q?KC&OuVLUV_E`rWSWgEY-wp3;A^VGDO{P*4Xs*?3LKd+S2R(epN~E))Y&Al z1i25($Sn=V&NBMv7^)(G7io941Ra&tDbC5KIVWGPin~%3cZM^x{6~IeD9N@^_6`E=*xGo6$7t~W+o54_0HcAhiBMb60= zJ0~x3PQKJR`EuvvE1Z*;IwxP{oP3RQ@-pY-nTpLdip@7UBP@4LzRfv#rE~Hf&dGN= zC*SRye6MrzeMs(Ty8yxKk_`IFW4YzZ07w6qxv}`9P6Ci-#K}pbMj#4V!<>@~f`)47ju&b4 z6+0sw@0@&sbMh$XW`qE1i=kI493S@_xq7rX~C+7ePwQh4`ax zh4@R~3tD($VgJFy1`IB&FU?4yFJ{Y>q5*?4!PpEU@Q|Vb!zEbmJ^?ax_<+JMR$lhm zqbojZUsKqpPi52}uBXd$3vqNU5|DX=$Txhzph6^%8-I!f!HXJiVB$V(6pDN4v5FoK z&|@hcx}sKdi!w)DI<%j`LrcbMkscZ^Qp1?mghED7v`+8$bhyfFRP6 zo6F6;8zKxXL_!Ek6Om%5qJV`iA_NQ|qCzMlU_~sbD4+-^@+gWt41$6Mv0xXwqM~B& zVnhDFb7psD_GXFf^S=Mj>+^Y-In(xczH_$T-HA6|uZlbLskpif)fw)N74)}u5Xg6p zk5pPok-LKaxsCq0i~dOo?u}HI65(Sn!uueH8FqXHbtM(ll~z!9NdP3N@kmHvKZb8QTd44JK?$6%tPujPe5;_24QkPjJ z>WA>VP@>*1Sb?1W`Te8`|0?GUYNCEV_TGfzg=OfKcYHt68k-weag#P^a#h7m^3Y^$ z#ZB6x$%_>?$w!mc6Y;aXlB-^mI*)%CM@?JQRPg3a{$V>#C|BdXb2+KvAtxWU<9+38 z#?W#{>5&I29&-I*JH90+u*ZuZC(=gJp!r+KKo*~F zRQf?>@t%&_^sm$im0A^)kvD&na=ev+Dp&wfwGzgw%F0PS{+}K}qsr;(SP1JNXx%`^ zG`tT&-D>clX=&Ji`mgFyl@?PyUdN$&RzUCnSoJqjJ>FTN`t*SQOQ;^Nkx+fzfcl%L z9`E=ZZv3069xwhJuAZ(nD&dVIs;?9<{;gDxH-M=AsDOGpJ66J5L5Hj7lL202I^6iT zQ-8drL-of5j87K?mGFiT)gK*Dzl`efHWSqc@x7Dk@um{hR}1LR=PA6oMD;=bEvNo? zMe1$r z@v<1z2kBc)^?2!u>Vx>Mp?bV4MD;l-{^4)zR9Z{*csq#d;{o;eQ9a)NqWU1d_ftJy zVWavWee0+m?}1T$kiG|~9xq=}eXW%3V~ds6Q$1cCJ6wOh^u}9YR38+7d{vHj!VXu@ zmpFJs>~QrPP*n*p(@}j;d_GL|cq5MLgXW(vm+-b5)d%^{*Hk5{K8W9=G(KLCJ4}Bj zMu$Qi^elRGgu?8mM_wzzyL$AdDLz`JR|wyLeH6VJiu{`?b#KA0;N18&s`Z5-4^+D~CrbzjtmzI}Gx=Tzr?qnsZ3!mj%g zMmkRS^tn%Z%NCk6L*u=pHNMY{9w2E2}bSIKeL)1`Ppvs zD-3Kwee07R`OU8T9R^sqpNywR{;(_mf>Aql$#a~d>^A?X0o?U1(j$lL%Ct#} zk5oc|o}nsaOm#0PjdZbJ;;kLjg1%`gUh4via)@Yplmc{^eB@s60OOC*Zo^yxYT)xW^%V>^ zID;DC4~*a&1vKcZx=$KDX8;)jw5S{Tr%l5U7~GlKZ{l9)FhaQFU^pazl!%SWa?Kjt6?w=rP!p=@t4(sIS2P zM^K#=yW|4IQj9(j!KbIO;rIfC{w|&MRnrl*dL6Br@n-}Vk1oYqys=BLyh;f^{~3Mp z#U&SG-@&-<$DX`6Z+hgXipBk0arMy`ABpyAXcbOXL-eQsSstp7?=ub`?12@Xf()m8 zRK>aupGdKeZ{qO9)09}UMVnTwO6f}%mBXBzie|^EZ}ei`xo0rSI&~`3CmgrhiCb*7J#{LS=O zg@~4sIcPry?bCBcl$2aV)&*=)E3z(xRWnDOSXc%XUWCHhIo`QM7f(cS)tpki9zKOy zO@euxX{F0AM)}b>IEqputQ=RlmTBacPD5#W4t;(|ZKlJrHs=-3KyeLjghRAyc{z&e znbD|N*UjWn+;dcnPh>RsEEHGG(dKNJ$K`mf)MpgbY!1q+=Sf5-jJ!h5|uTT zGE;aJjWC=h3xD_>vV>%Ak zSTf2#&uFk74X`E!@5ZCNs8UA-?B5(&`25S?4Ns(J@JP%prsN~E#^&Umr=G2Y^gsp#+|I%Me%N&14% z?NRDBBgC(wRkuK49b&XlQH<9ZrUNc^L$!WPEIDHo%cRuv8bf`Dp<23!1zdWJ!hB)5 zvC;TQAKy*Vmky=mk#AQ;uRqW$SIex}FB1G0+Bdh_BakNyFE_CA(B1q0L6;`Fi%p_w zX|BZr3q@CMVI5Tvgap^8*qY~@T$-0w=v3I7Kb#cmJ4^2f=DQT2Z%#&x8|yWp-47=t zx&UrV19UM}?(wf&Z}o9zzyO69pqV>`!$)FmD13y1xG0Qimvb)5i47k^*MvC(N%L&< zC~|wy1C2p8n;R!BlTBLF^N1d&5+>@JkVS(#JEOI+;(iA%CVAI)X+iIjbpHT^YDwXbB&#fU3*HhMQaeC%CWSD4NcQQ z43U>CMR%Gy{^)2D_RDFs(0?gKc5M9UOD`$GG141^FR;+F;1Ya-q&M!iD#Z}^`Wd$j z>WoYQ&>jti-UL`oHRt8S4L%rsD!BF-it4k=N3{0=6n3TIxGotxk(};;-~C3ZFM4s6 zPT|j&3i!D&R&o&?r}%0@e~4Ss1d=br_=mZ+nTV>con4@2o@p<^*Zw6~LvAEK^rp)p zYtP_oA9wHIJfS~?k#a8{KCToWgaK|WPqP~y!(X@@IhsC5j$sC9HDF!>b0?v}B4(Rw9%{hsE$^<;l+sy@c*;JRc4j=Tu7VL6ALM-`=xgb`vG zp_SEj_|#IwAqN#M1rfEeF<33sF96*-qFc5K#uh5^_EfO+U7MbQmZkode7;vV!#IQy zPVBAYu;SNf9Fb|63Z7Z~A-^f(MvTKz_R<#S$VodBE9x4%0QZ2SFLr0yEA}q+p|Q*V zvn_YSmdEpjf;xWw|L^NCY|-3`j)irCdvsK{$1%QDOAY{*(&_H+ty7V~qc2<*qIm@Y zyR+izk5GL~l8$qwh3Yu}am5`zskr*w%PLeeyyEH+sE+f|6t_Mlv5T;ykEWX-@3sh8 zoFd@#NHk1EvMRqRi5ROg;|Ub02o(o}b-%dr0SDaN=rNN4_;#k=~k>b2#$JEKFS~*$v5DBWeqfVq&aiv!q6{nT0 zhK=MNBm*cz_JD}C= z#TGPS6=a51@g#a<<4^F$ks%u@j)975TE$Z+l+_xq?mQPNh=i@82CH})O;`n)p;f$y z-q`qaym4g6hKl2$qLx;%8-=n~B8OZ*2NK-ZU~~LqjGsG}anELZNKz(-4m|pBHZu z=}i9=Mp?*Sv|=G-h8FS#dSmDU~ zZ)o_IH;oM0&~PF&G}Rh@M4@cz(=dg0(kYR`W~|{SG++&6hSu;0dSlbS@ura>8yZ?c zLkq3pPZY`)J`Hs+Ax)0Mgy5gT)-2>Nv|=G-h8BYJED1T}2_YLo+CfOZ7E%R;G9UZt zyny|*fK?oYCai+Y&?=5qDys3uA%|?J=m-@Zw2GQ2lpS!)x-#IHbuz1{g(j?m%+M<8 zqc=8Qmp6_K*-+6HDmrTw4NxdMALf|Vja4*66IMZHXcbM+8ynB$jUz)gRGbbKr)d>& z6w1>MbNuefDzedpRgf84MN9O?#+&oTks%u@ilL&9R?!NDvQOjrUFXO6M5<1y_CdTa zOKFXEEQQR_QVP%;3i4S2GGs%_nUFG2OKFcnInb4YQ)&70$zYaJh;}T6%+OLgqc;?s z%nFbp8&b}Jl%ZNm7Zl2&smIazUFTNC0fhc7JeQ?(MLU*4=D$cuFS`$WsCT_{apU5& zA;oED(;;*Swm+qDclX3Tv^Z^;b4g>I$nU8UDV$2%Ifu7F+0fevks%whPlN1JGep-6 z(K$n$qLueYtrN2+;#8wtc7;T5B04MSJQ1fT>Hj_vJ=miG*a&+>W_XW=qdOcqn;k)h zYpGsM6Q(O)YsMXl4!o`|!Ia(N~sdJ{2FN#}{^ucZI`L=0t*reGuN z5t-pVDnoZTGMybkhHQ8=0v?^8Ab7Bj}KpNC^w+8|u>_eMj#YhT2U+<@WP5i-L&atFFY|4pnP8M5KXWH?fiAtq=q zmZ9A5MTzmkhCd;k6Bn}+cVcvQg3Rzv+=uSazLK>gLpGe40Vk$sh-n#OiuU7vRQdPj z>BbK^&6Aq?Af?H zoD;Lzi7gnNogg#36T8qI+PAZIWXOgS3*p378RE(eF<1NX9IE`g^i{?Wd8IWQbHh2Z zh#h$z!?Pn~hIiymbcg5E7)_7sh#?|4RxPhH`3!}3W zWQKR*Q*?*+_gFhJWW$N2aN?E>aZ`r4QTwq^HT_H_pCh3IPuT~!yzDe5y|TPT&Bubs z4Ke4A3|up$P5qYS9HhN-yz{cIoSYo4*;#q5X&{4 z-&DH;D)}9WpUz6<*n-GyF=w?!=MS`W?oFYy+R(8B#2tgrT+0LC{7GZ24ug2r! z&MJoUH%b`}nc?B!Qxt-OKkuO6kPSE+0O!FBu|7kr(|oF_rqxw)3=%(|2jLH0Z&37X zwD{COOXrac|KV(-;UnFS96jq5WCpY@0MM~C*v4Q$HBl!YF@PRsK($cHfXECFCCI$M-u96e81bYf`fJf1@52}8$@9(N3evpE1x z6B_G@U^sEq$;SL!Erl0D6G|6`+&> zkr^IPS9AxUA|womYyf%_fL_lKuWCBoRJ&7E(jAGP&g;rCj-IzII;Wwf^HvI-w+$UT zdfYJ>&Z_}%deB&J2g5lXb@D9(XAi^aiBg6`W_UP*&>e8jK*Dgy2Aq!p=c5eqfrfLY zYByLVXCd*!`3TN zYH)qRxQ3yWagiAw*BEpMuJe&FF0z5^E8yC%S&dbVE>OuhBz{)=tw8$LVs#-}I^U$Q z`qr?r1IZoZ$We`_!M_bgbrI_1HwM+$jA{Z(85Nn~QB6m8pqh+?QIQQ)zX8=R8R92R z>r&NjhDt6&;-~eC6j2}L zg;K^vW_VmzqdRb2iG*>H4P1wS>!4v~-Tm^q=l(8d}or$dQ$fLGYaO$Z@Tr z(Q5|dx)*iwSc9tu<64bU#zkg$To0i;aNUoDaghyN#{*X#&1!>c^sq`ELE>jsN4d!- zzxo!djcDndkix3IVP!{_JI0ZtdXxsQAB<`f>f{LqRXs-aUz9Q`GQ*>K9o>QIc_fUA zY@lihR3cL}%M`hpB1bcO1GSEmsh*Yb!*F37m(AShqKDzRENFNGrV6_DzjgIdw!7(zk0&2 z9+{$hrs$@fIto>A*qV+W#wmL`x+|Y}I=U&Jtm){*vX91KESt>mvg<0@$FN#V2icH4 z0J8gKisDSsN6S7QRsJaIXJpG_=)+v_k+YA{UH)n>QtnCYKz5`ahG$2}4DUz`-J!oB z>qmxcIC3@|8JsBwX)l_f-0#I;P&g-suoH2N&Q6dS-ia3I4($$WM}}-TF#=AU zpDE7G6vMP1Em7qUqVtU(@?2{+hJ|xvBs57%%ME7!}TmaqPq?7@eIUGrSXh&>h-OW$nn24JRhUiIPk)AybUkew?A2 z7OSK$68}lIM9l|3y_sU2Wc#6|Q<~`y$SDSabUX5HHNh~DdN~R+5^H~6Yyj$>VEk4uG(zzznzXM%s_(-=SN6&l(nE}lU z0CWirc5N`A>8O*}7(iDupi5E8fXECFXg<0F&@3bjh-?758Gx2#ip84FRjM8Slqoe| zh{R84iE@miXQ@SJ5n4L8rqEex=-AQYj=^vi2f(?S##$N-=Ni<>TMe9B7|yjQWjJJp zhjTl+!`mfD7!KKhvl4KYXNo&DoI6yzWh%K7i672#IOB!RDhtkCXzAROvTLm}aHQLj zL+4IKnCMh|KKGv9ET_>|1>;(QI(d)5bvNT$iBiTzW_Vod&>gt$MZ&nq2Cn;oYprJW zfNHc}CI3O!^#dMcZ?%P^$-odJ{Z*o)X4`7s&$O&VU#i| zGQ*?VhVDSM2??Vj8>lt`)y7Qmu%`96YWIXnwj=S=+Gs_Vv}o->OJ{S+ZYK>b>2~DE zdN^!kJxQa>U|dh3PHr~1{>!+YMk(VWGd!+W&>gs*N5Z(s2CgT7Ynx{Es%rF_N?u3e zXSL0WtS2p2Z=j{KBZbwIhLs&z?ifcNS#Q$dPX?pfgF3mxpxVx;-a;v(A~QUyWEDo$ z7zv{y8>rHw-NjK+Q8_BoqT*1dIH<8XXy8**fw#~J}|pjr2NZRjmq`Wf^@Y*ki^l1Z}^iPOJ_+>)+c zBJSJBRiiZT&Cr;UkQp9H2Xx0Mt&lJhvVr6TAUQrN>O@8DsHhngHKL+=)O)y9gf>ot zsPnx`r4>;*-l9^+qEg$UQZuTl)G*oVXmNNzd>gFMbi$@(gK}t8i9u7J(R4;*Mnh(J zG=0$>Xu2a|G-Lx!HqbPQima%}jEcrl(NJ^ghXx?GjpnQ@kDxR$Q0zS=OEIBvk(mkv zfsu`^d_zTr(73PqCD^I{*a$mCW_YK@p*x&9pM61wY&ew zaH1!i=n)m&qoP|>bcu>i+K+i?;Pg(}k9!zbWOvZ^9@KPGv%?Q+x|lHSq$cDr`>{Vv z7hrp`ceyZCB_>RJF^q+1%rM9d593yJ2ZQU7aF~(}7=r*~KveXLisGo~qe(19EkIc_ zI>2DCW3->5z%g2E#bqCb!J5)D*^ApSFnd8}crVtXJG{7y#Un#Dychv5&X0<7qheT8 z42g=fv?KSSf!~qyjU)10sPrE846{5LVtH~_IZsBiC--Ay_Jqvvo@_>UIPf4lfDGC2 z)IHdNlQRSSNz)ozzxaaAGQ)D2=ue=yAo_TdWSgS^a&rAy0sF^9c)2LrPgWQO-* zKe|Kwhb$f$vf;&b@Zy@NSQHftqGEnj%+rp1i3ZLMQD?7x!E%l9MJ|F+??AUeIl~9K z`Q|`3Px*302fA;uJ$Xa91Dz@{2fFJS#&>AUFvtuK;~=_&!7oVoKu0!U+y)r8M#arh zu_P)MYZCvU7ND#h>sEuo4$GSr1wPO%v8Hsf!eAZfZf7qJVPN)x%#9GjH8 z%gvZ7F*EielNf=8D8fV=nkDzSspTEL+AU@`EFFa9Tj`D)S0U3ER~cYp}ohv=KQWZVf3Qv zM^W>p%51cBK8)f@O?g>Faru$)Qo0>!2bFIdH{~AWaRbYT74HG#92)GSD9Dt5Gi5I7 zsA{0yI@{RQ76AOyuM*xx1p4I zkr|%Xz32{JcOhY3WP{gl;Pp#X{G>^(R_)fPWGxausb7?n{BZvdi`0E+>HMA&O@A0t z_CDi|!RM==0^rGJD%Lv~-Tn@<&p7mVUHm^Kr*uK9MYbhQyB- z{t009IE|a06}aO)fjW6~mfrD>$|5hfqm)^Z8J^XL=#Ej|M8d4d2CL>^bz+uinkAep zk;w9%oqeQQ?^VgiNc^}?1TH%N)4{2wh3gZvbXsKjuV`BuT+;2xJ6==8oOwAGuLR0d z4^*Ghz%7G$?L(bxVR#AV^%+W;7n$LC{fzG5^)(XaMK*Y~2d{QnB0o#yX;{CgroXD> zHza;o?X1`;vS1xROQ%B$tRe%;jxBc#W|eQT$_rriJB?cu%<2!+$qt59A+!1urOb-V z@T`tInpssv!mP*!tJA^iv@CIImgt%#I%`~YRO`AbIUb20*J*Ici>=-ku6k(c^vd#I zTK6`%q}!2W>r};@d3CjTbq?Tl0u9_dm{)z&$zFz6Pv+GCrOb=W@Vt`fj@ZgX!o0`^ zuQS1GV3z2gCHiVuj%u2tlBP)fum&nW`M7nq1uGXVowHJ4oo!&*vE`1ztomE5`UbE% zk;Xkcm{l{>$+HZr!OW^TN|_az;aL@;J6N?w!mP*!t1)0TDoc#W66a@$b2Y9Gs&$b{ zIwJAo8U>fU*cxZyIvFjU3sMgA;|wn8cI4O^p_ntT^DSQI2JkwC1|Ap8s}t(v1%}sH z=G7Uc%!|zMyv{&(@am3)d65lXrQkI=OO#}Z2^vT=HUTzJ==ov~;e_^8Y|F-{6vNM~Pkk6&UIL>9%I8!cEf(b8F*0_#Qt%Z@E~3}$srmi{$o5n6k{=6Lrx zWi;%K!Kh}VPA)d6ZeUb%P|B#t43BCtx&zf!NEj8_K(!K~wLDAQnI-PX61QcETQ#s7 zRfi=ixe19M*m5hnR$0JqMoZ_OEdLLBs|+ydcI4=~(~7P;tmwMU%HJ9gX}8cuRt4j` z6?O6+gYRy}w-lv}kIeA+R--%c-HC+pkqvwg0pEYJ!~$cspr2-zU=42V3X zalEb?y`hpfk@#^uWyR1g3&$R`be>JYvCH7FW5^xDN8>H(zblx=+o+Sz8X7y9#ycow z8f1p2@fo^<#)n9l2HBwTDrmf%C3b5dpR0CXsANA9KaiKL_;|wt@+De2uV?w6!o6XD zNVg-$$L@gm_=*O2Bbdn7sFSZ7BCj!#Z&1oa$P7>90J?+7k4TsZ*&y;Rh`g5(D*e={G26z%o5*gETd5Ce3zvjMV>;BB7Zf$$)DXAq4$n{bOF)N z1pLD={*m9CLM-65?eObf{m!n9#n#w0GQ+zz1>G^x7qLgkkPX)&vF_rZEb(`i_*45e z6;<$A`PGH|`p5WX&)MH7_FgIZ)8yTs0n%c$!D$$bWs@0R_B?dQD3`HXWXOi>V<5X) zOr*!eQ87_D<~_Q(61DyrsTR|Zt7Lji9o1<@jzZpj6U@v=Wm6b1Bh=3K%})(>Z~?Z- z4w4z(!CTQCeqGOgAwxDCJRT0#iHX`VQB!-j6jkutnwL7pJ9}PgD?i9XS<~d*d8x;; zZ^K|Lo6PXCA4YemUCU~bAse!rKz3G4WX43}m}nRi^|km%(7-=6Sw_6fgi1Q$($q9I zvmhJB_)#M5F7-`uz~u1DJ?dF~oc-H`?XiDkhWGCobcb7yA>ktd+3-)mzh*I!8xuJ( zk&KCK?cYu`@cY-y@-Nr&FUL3{lg7VnQyk!5x!`NTUOtDdvX^9r_i_)q!^@Z0Ib_I& zm-+BA4}TdxCR%F$-cn89R>?a^{O5o?czX@q)LavD3TP(Xm1*8ZOQ&7Te>^F$(6}A> zl-OD^;J|HZ^7``WJsPY4$IyVEY~DwmY!}l{j!$AhAE1;0kr^J)m*@^IpCI8dARB-> z0no`YQKad7rP_V1l5dds>749NEJh1$%BMH{ z@h-UgS$yzEIU`QrnE$BP&+w6MM~f}%ZX9&Y-h*FLoGQ-2kMR&l7Az?UV1I{?W852l^GgGjm^Ier)8mwBMrINFe_;JmHOI~a(v~UeU zO9zYA3OlwI8eG!t$gwrYaFJyeubHM?$JS69cwsQFVW^V}46m!0*EuL(0$z(_;`*4lR>K;vnqH)m2}t~~7At=^wr;UtO+-uQ<`h`B7+7{}xnpo_ zU2n0vHh@(LjeAQlt4XMnHyc(rF{{ZaWmaT{Vl|1DM4pGQ^O4X}G|Y-@uxb$RE>4Jx z73o>^V(=&$7a4KUNV~HHRd7|ga|XE+HSX9`n4!EOmt-U5 zjkWAR6PA4w24mS|hL^n(-Jw=5^g=ddH-qflxX6i%WL#ux<+Q+yQ^i%z6On6_%N$7b z?mv=BI!{EllK$^2@iu3VXl)qwh|KUFxy!8F$Bw`?vf)u4JZc>mE#pFHcOE8pn%NW4 z+PGs+L`&rjPlQn3SQF8fWk2G{CNsS3C(#{hC96e-Y{)(tvWw!PFfIz>;v}v7DbzZ( z?1?Bc%4H!WdJ|Egr1M0aq@@4*M4ZANJ&ldV`R%-(1%%|f8^;#cli%@%P)!CmmS%Q;n@)~!#nadxaN=AzF)S{I z#Kl?Kk3Ui6-7ccKBh!-?9g9T~FW!~{4oJ}$<^#aQhJt^eZR zrN7cOnnnp}iSvM}}-TaXFlr5f{_rVw(1&t!kRD5?T$$f5ACJ%?H1Z zH!E%)JhekhXJ*`gc$j4nNVg*&s+zvQP z&Dy*K=;JON=>H}4M69xi^kle9OLL& zYtfm8e$JW{I%^FbJ9^wP7|zN7IJ{=e+F&@mX3QD`XEnpoYsQcn9*(;fj9xQ_Y(&o^ zfU_Yk9*m3invbyD1sS>Bzn><`(1J~=o^{Qs&E+_N2YD=rd_yg%xE0FeB ztY|?Q=gkyWdkiZ(klZnj92KuYvnLo8tso=cG^pNSRJ3*sM;4jkQN4ujh^%LkaAc7U zR38D=2XXP9ruDLF=PoKk%f|R=ePBh_Cl;;O(9-!h<)HnEp(Wjp99i#$jVxNQ#`z=| z7cEgEKQ_4bGA>$MhH;S@9@od{4qWdcVO(Sb*M8voT(kN_HTqN~`;hoqeQrh8*A}bK z(9-!Th1J)Fl^t2`7)KsipVQ!92c!A|b@D5N>PtqoAEk_n%oH( zs-NQG2TkiY)$V{wen;Y`^^+A@2P|5Dpr!L$$^rd=p(Wjp99chvjjTUu^aH`T{z9Gn z&EWc#as7=_#zkg$Tu0;cao~#Z$Lq+D4O|C->o3hJT{Wtzl4?l&tp2hhD}ujb=lvdD z9W9+hDXb#d`kAmDS?(A|9$ClG;1T))x%_QP4b;g)2Gu`|>R6OADl)^PYKrb4l!b&N zi)^53kd24o+2Z(YQ72o}&h{RL=c3lBm2E!^H;&8Wv(*`qABH2ZABH3EJq)k#J*kG- zq@_7F!XA+s-lGC^$0&NWC9>gB3?4~_s*;;uI)cPkP*C>}ckVuy%G!aQ9 zT|Ep}()k%|`H3j^hDvkxs~0xK(?MoKmdYod4xxOqrlT#(9)`hKHksjN)2d96J%ZIDLpEd=L3UxbD99EkY1y>U zl0S+Hjci!}eV7YAa-L*#m%rL8za(-;cH|-q&yJ88-jPet9r`D+eq_joBVFJ~r)+Vu z_F_89{a$o3UfA$Y4(CKycH&Zu&Q6dS-ia&G9ony8?Z}V~Cwjq&)3e2C+2T~~$9z=z zgXnbQhdj-ijZ?!p(wiN*3d6G_WQKR-CUl4XYgs=sWW$kuaHKd}^wD12jB>vh#l{PJ zHu{8fqCY!v3r1%r$PDkqDs+eTWvm?;vf;!KIB{0CI5S%e)PCHnnyyyK8YKRc>{)6) z_}Sk%)=73PS~|nB{Q-H7K_K0Zyjz`V7|4Ohr#}0;j|Mv@_@qh;QORN1`q|%52DA>P z42aC|fHt8!xaj4n$OfR%05mdN4A*r2tJ-Z=iA3V3Gg3Lm_um&-bZFrzXKV_c3k)4Q zK-@9-SUEfZ&SNyz1;KE(qE3!AaK0cUcyD9IKR zG@s{H(-&0oA`(BJ$?(U!1)pZ|*^QRY)NKC_G|ljlZby!u5(Sw7O$Y!)%Ue0qf&smZ zIyuzevGAYnjc1JFzWx;$IV&~#|UDzy7ZC3}(h>0GWH&Wr#!pU_ydgW-INI$37m%wjnEP|9$~3=ii=bcfSlAz?UV z1I{AAS&%K}YdAltc0a3x*0b`%Spa9e(7D!v^DA09*QD%P*BUs|?Z}}sUlArc6`#+& zr#HXR=+_40I)FNPjlp#_c;NaQqcASAfolnHE!M0mt438+augCj ztHo9z-D0si8ZDihQ&`<%SlNN(j&bCu(rNHpf>BjPoxItgx`|O$Ln)&oGd!x}(H*Fc zMZ&1a2CC&ib!WD?L({6K+MS@1`bhk=?zAH7Zi^NzLguVY+3oH&w4~dSBkPW^k=2k! zzdIOLBh<;22GSdLn!YQjIORT8NWj`*&|s(P z2|cO*{OhEqu1t3iHY%$oQYTfFm`P1fkRz+mm~oI99>>Gzj!|e;CZ1HXfujy^)J}++ z2~i^Nspk`KdH413t1BYyxZm)3I-8TpL+3}R!1oU+?vz6?8HWl%TACP-iaOP z4ky%VOvsQ8CmO?vh6zzWA?j%lo-F4EC# z17yR2TsV-E5XpqdPKYK6k)_>u9Sxjj3FkTcXp>_+kx2-pYb83`WGh!VFq@db%u>D_ z=4j(zxcMz?Pc|zTlB&dnHQ{__Pw6Sf7ugX)y(#UWoZ%^LZ>F@J^5ux8v?{hI zyOx_$Rbr;J3&W^}#tehZ@G$D5J7CmA!Z64NjNX9JGa-5;ME8W~rb*CZM*w9_X-|W} zp3)wQ0#9joYf8H*4AzwPVJ{kDVD^H{@LtdoNAM!b;*lX6UJQj7XD7tqgcy_%0}`TN zLKJIXc=@7p63*N1te!<@!n2J#axk=dvpPum!?QZT%xXWAEmoc#(FC`EJb6yJ305U$ zf`>7hmT1gq$PAC>WON6SwoC*WvVrCTpc#`8qY`37LY$uv=V~szOwmwxj)xMIF$Rh~ z$Dug$|*~^__^G8BxgXP7rWDyOBB0wzYy^)%6r)B+0;v)>DZ(!D;Kk> z#Ki0@CUGemGYK-olbDC@AaMl}CP6kx%m;~i2{A`wxDw^yqh|G73e|arfgP%I%&fXs ztXHwl`51t8k{Mp7yHL*}Pbb;Xc|CMqn-Etg#6m5V7V~iyr<_BsHEQM6){HIuzcORD zVv}-lxfxR>X2xz{5=+sTNst+y#69Sa8C!;gXN+u+xD_OBPKYHM!zz@6k2PaA8wU1_ zEh#r+OIhc=7=U$>8D8fj=nkFtu{>nRhR#*cd3QprNQk=KiP1t{y>zusW5r*55@I(eUU*j%G9Sm%O=*o)^dFnd8} zcrR$x9eD8)i${iRc(EB?Y)XiY3GuLY;VsqlZI!%(#Qy+g6BN=>la?}lEP+dO_oMyy z(9+qGz`d99emEU!9y8ucw`;#J6Y!lDogdKBc_xL< zPD96z4R;K_W_Th1&QCPf&R{q{qfS0!;5^N6enBb2Au~LjYVIfaNEi;;fb#+1yq6H~ zB*a?@@uo&pU9~<&B{h)v5xobOya3v3AvzW@Xk#sw90KKC)Go!bx{pZa9 zUNvdpy}`U{p-z5eczwvcYNM2Skr|#>7P=!y>LX!ZWP{gN;I%&?K2L~!8dgj-ZK9Gm z5f|?u)z{3*K`FB$ zGd!z~=nhtGkuWQ=!Rk-2`aL0jONd_*;wO#kWYzig3;s*I&%58%miMnc;c$LwE2x9SQRy z8@$q!_+xiTQ8_8nlHTL4{;KH!l?+7UhjmnvT*Q$aza>>qnj`rjv~;Q^{jjPh=~#?L zKh&^e%N>JRRZj9#Lw+oghOxazW!^#kOd7X(GVq{27x49{u| zx?_}ckT5HvT%(@OQ&Jd|6s9^ z!6n^}99wl2bLMrN#j92TuL(48qhMYWQ70Q3UJaO62}+q4nc;a|h3+6Q3kmZg8@v+W z6;Fy-QbaW@TEPlU7pi0t522dLYbT>*F5Sift zNpuIGhmbHJvH|D}0P39-J(HqGQgqjhwy4&$U=})UMdD}F8!mZ!TtAD^Hnep5CjA%M z{VYaqN8aOlD$vZUhsCRV0I$bs;C{ipo_j=8M47^ zD0rQn6oZpukcRb=YWlKDUP0oAb++=8_qcN{Sg)d`b507Za}6x}Xzq@|tOi@G1_iKs zjmAAUnAPj3ljj&#!;M-3dnG}rg zOVr5{gKr|^qxHfVADQ9t{f_RyN2_`sVZg=?CXpAvxXAZ=q-FgjW^OwKguu3&VBP|E1Y z43F+GYjQ0By7@^lPec2+HM!=)886_jwxIEvT#J(ar*u~vXwvP-0XI*PCu(}}A6|&- z>R=+g5Z59@WFZsL3vrPdo=7&^n8^N>~M6TC35~@*BB@PmQ3|()<&`lPO z9JF+nq~N&8;IL!J9m7YXDfPc8mHfY=l z8h0ecZ5qf)svRxIh2{lF{6Oxo;$wvcq&-?X%ai_Rf-4LV>2~D!xGf+)3Tc29!9+Ts zPA)e@?qVWEC}kpKh9^R+cfmzkRE&v`4I-;SWR=E2%Xpy?t=om
QptE~9A&%)6Y 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

A;#>$Zn!pq7e2bsvqWCtn6N|}S) zVWq-B6j-TrkR7a4JBZD2j7a)st7li!P0o)TBzeyj*Fak4it{lz7gnVf_=EFWw73g` z!FiDm&g*FT67Wj&IB^s~N#^&M1>)CiU8n40M zwfMVEnTo&?qrznCi2}F=IcPd);drExHpsU zCUY9R1qacK%$u`JkGF!8`Y`AMUAKWast8@Rgi3FL2e-llFho4KosG9itnNV7I=T5X|Sh)*CLBc- z40lZ2_i=!dlzkmSMP-CzqJF4@o+f3YgKlT#FbDBu

8Iz{-&hBFD-k2R+WpWCy*= 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 z zRjg@U2coShbu_BhJ-G(PF-C)VL`yXs3!=;wJk0yVZ~~-duDlbg+ z*t1DHKT11?wD~dxF-tg$oA*as8x8E5{=ww+08G-Kp=j17^xi)pJ3G-t*YF z$ZK3Y{l%WNcD^=V$i}N`j19ac?&Y4iHq&>9y~$Tjy)E1qk?oogTgC?r`YxV+#}-t4 zF<6-#_1hE{6!eEG_nI2E$@c^#)w`vCG`KIJ+RJJThkF$qeLHxtyhz^Gb?v~ndP=f! z^kKc-iAFAkppn{+$}ubdgvBmYUB(c!7Csv!@LmR9Ebf+LKJn~c9*FOJz1}ET1d{!; z2wZ`xSWN$7a9#-tl?MRjg|h*`-g5@xlM?WHvo;|niDZnaJudV*6(~S}y9%017mL|z zP#x8>^jF}7T`Fsq{>=cmmH@8E1pr%E4Fe!kdzq(NdvCkHjsR{K0M`ou8#Zl#0Js}K zKyf1q`*)$-gsO(-4}Y}|_OkSGm^V>=5>-UGptisUI7Qj4Ru`^M5#|5=D0{j5 zG*N1hpB0ogfZ0Hb=spJmisw<-&4uy;stUi*z<&{xXpjpVlgsf;;v|`w%kfl7=8C71 za7E|Rmw?jr#Ve?yFN)wLd{Adv7-wFkGm*ZCJCm64ac7b9O}wMUSnCde%3B_LYv-Ry{W`SZeKYtB z#3T6H^6UWz^u>Q%i~a&u6u(j8+Zy*P2}*A?798MyU4s&iDCZw!`NDH#BKM2FCBta^ zMMLu^IN=B|Lh}k7=*5E7dOz#x5nKqH@P69p4Ec*1x$DM+$@}7J6{O|j>Q!9QtXG@r zRGaEhn_9az)xOqyV5gu9oZGP0?NAGE`YxXRnOrzD0~IbbN8xs=#bPJ8-YFz)y(q1S zw6$xQ?99aQ^$z=NH`8Y=z-Db!YdCS$lD&6Yffd`2gD@5$4Jd18H^ED)-HnM3G|@F= zBKg9oBiXuz*s@<3b)w;JwH%c@_o$WqtaU-M_uzz3yWQN=2Jllr{MQ;c<&iO^n+xFe z$TUQl+^z^s;uVtQ8y59}*!mP3+8D90)CQE=Q|xZY>M*HpgsM)-!%cWL28BHk0E(aa zLRUlqlg=;xb)8%`;erHX#Tz4?jj3koy^N_%KrwOKj=}r4YkF@%)x}`gh#9B8+uE`z zT1@mdLlyU)p$vWBl?N?sIDvy=9H8ii!rn(H-C5mNs+* *;0EdVmu3IKCoC^f)Oj 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ϢXS^XkT^*7O~zl~GrPRCmAr!4o0vD{m) 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 diff --git a/landcover-L-SAR/tool/algorithm/algtools/oh2004/oh2004.cp38-win_amd64.pyd b/landcover-L-SAR/tool/algorithm/algtools/oh2004/oh2004.cp38-win_amd64.pyd deleted file mode 100644 index 648d72f9cd4e30c17b2538e7f9d1634b908c5bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85504 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