{"id":"v001","input":{"nir":0.45,"red":0.08},"expect":{"result.savi":0.5388349514563106,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v002","input":{"nir":0.45,"red":0.08,"soil_factor":0.0},"expect":{"result.savi":0.6981132075471698,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v003","input":{"nir":0.45,"red":0.08,"soil_factor":1.0},"expect":{"result.savi":0.48366013071895425,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v004","input":{"nir":0.38,"red":0.22},"expect":{"result.savi":0.21818181818181814,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v005","input":{"nir":0.38,"red":0.22,"soil_factor":0.0},"expect":{"result.savi":0.26666666666666666,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v006","input":{"nir":0.38,"red":0.22,"soil_factor":1.0},"expect":{"result.savi":0.19999999999999998,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v007","input":{"nir":0.12,"red":0.04},"expect":{"result.savi":0.1818181818181818,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v008","input":{"nir":0.12,"red":0.04,"soil_factor":0.0},"expect":{"result.savi":0.4999999999999999,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v009","input":{"nir":0.12,"red":0.04,"soil_factor":1.0},"expect":{"result.savi":0.13793103448275862,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v010","input":{"nir":0.31,"red":0.26},"expect":{"result.savi":0.07009345794392521,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v011","input":{"nir":0.31,"red":0.26,"soil_factor":0.0},"expect":{"result.savi":0.087719298245614,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v012","input":{"nir":0.31,"red":0.26,"soil_factor":1.0},"expect":{"result.savi":0.06369426751592355,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v013","input":{"nir":0.33,"red":0.08},"expect":{"result.savi":0.41208791208791207,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v014","input":{"nir":0.33,"red":0.08,"soil_factor":0.0},"expect":{"result.savi":0.6097560975609756,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v015","input":{"nir":0.33,"red":0.08,"soil_factor":1.0},"expect":{"result.savi":0.35460992907801414,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v016","input":{"nir":0.05,"red":0.4},"expect":{"result.savi":-0.5526315789473685,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v017","input":{"nir":0.05,"red":0.4,"soil_factor":0.0},"expect":{"result.savi":-0.7777777777777778,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v018","input":{"nir":0.05,"red":0.4,"soil_factor":1.0},"expect":{"result.savi":-0.48275862068965525,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v019","input":{"nir":0.9,"red":0.05},"expect":{"result.savi":0.8793103448275861,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v020","input":{"nir":0.9,"red":0.05,"soil_factor":0.0},"expect":{"result.savi":0.894736842105263,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v021","input":{"nir":0.9,"red":0.05,"soil_factor":1.0},"expect":{"result.savi":0.8717948717948717,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v022","input":{"nir":0.02,"red":0.02},"expect":{"result.savi":0.0,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v023","input":{"nir":0.02,"red":0.02,"soil_factor":0.0},"expect":{"result.savi":0.0,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v024","input":{"nir":0.02,"red":0.02,"soil_factor":1.0},"expect":{"result.savi":0.0,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v025","input":{"nir":0.6,"red":0.15},"expect":{"result.savi":0.5399999999999999,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v026","input":{"nir":0.6,"red":0.15,"soil_factor":0.0},"expect":{"result.savi":0.6,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v027","input":{"nir":0.6,"red":0.15,"soil_factor":1.0},"expect":{"result.savi":0.5142857142857142,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v028","input":{"nir":0.21,"red":0.19},"expect":{"result.savi":0.03333333333333332,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v029","input":{"nir":0.21,"red":0.19,"soil_factor":0.0},"expect":{"result.savi":0.049999999999999975,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
{"id":"v030","input":{"nir":0.21,"red":0.19,"soil_factor":1.0},"expect":{"result.savi":0.02857142857142856,"ok":true},"source":"Index formulas transcribed from their papers in Python (tools/vectors/gen_raster.py)","sourceVersion":"2026-09-22","tolerance":{"result.savi":{"rel":0,"abs":1e-12}}}
