Fix: revert optimizations

This commit is contained in:
2026-02-23 00:51:01 +01:00
parent f47285385c
commit 009d68087d
20 changed files with 134 additions and 377 deletions

View File

@@ -3,7 +3,7 @@ use super::harness::*;
#[test]
fn ramp_at_beat_zero() {
let ctx = ctx_with(|c| c.beat = 0.0);
let mut f = forth();
let f = forth();
f.evaluate("1.0 2.0 ramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.0).abs() < 1e-9, "expected 0.0, got {}", val);
@@ -12,7 +12,7 @@ fn ramp_at_beat_zero() {
#[test]
fn ramp_linear() {
let ctx = ctx_with(|c| c.beat = 0.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 1.0 ramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.5).abs() < 1e-9, "expected 0.5, got {}", val);
@@ -21,7 +21,7 @@ fn ramp_linear() {
#[test]
fn ramp_quadratic() {
let ctx = ctx_with(|c| c.beat = 0.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 2.0 ramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.25).abs() < 1e-9, "expected 0.25, got {}", val);
@@ -30,7 +30,7 @@ fn ramp_quadratic() {
#[test]
fn ramp_sqrt() {
let ctx = ctx_with(|c| c.beat = 0.25);
let mut f = forth();
let f = forth();
f.evaluate("1.0 0.5 ramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.5).abs() < 1e-9, "expected 0.5, got {}", val);
@@ -39,7 +39,7 @@ fn ramp_sqrt() {
#[test]
fn ramp_wraps() {
let ctx = ctx_with(|c| c.beat = 1.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 1.0 ramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.5).abs() < 1e-9, "expected 0.5, got {}", val);
@@ -48,7 +48,7 @@ fn ramp_wraps() {
#[test]
fn ramp_freq_half() {
let ctx = ctx_with(|c| c.beat = 1.0);
let mut f = forth();
let f = forth();
f.evaluate("0.5 1.0 ramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.5).abs() < 1e-9, "expected 0.5, got {}", val);
@@ -62,7 +62,7 @@ fn ramp_underflow() {
#[test]
fn range_mid() {
let ctx = default_ctx();
let mut f = forth();
let f = forth();
f.evaluate("0.5 100.0 200.0 range", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 150.0).abs() < 1e-9, "expected 150.0, got {}", val);
@@ -71,7 +71,7 @@ fn range_mid() {
#[test]
fn range_at_zero() {
let ctx = default_ctx();
let mut f = forth();
let f = forth();
f.evaluate("0.0 100.0 200.0 range", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 100.0).abs() < 1e-9, "expected 100.0, got {}", val);
@@ -80,7 +80,7 @@ fn range_at_zero() {
#[test]
fn range_at_one() {
let ctx = default_ctx();
let mut f = forth();
let f = forth();
f.evaluate("1.0 100.0 200.0 range", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 200.0).abs() < 1e-9, "expected 200.0, got {}", val);
@@ -94,7 +94,7 @@ fn range_underflow() {
#[test]
fn linramp() {
let ctx = ctx_with(|c| c.beat = 0.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 linramp", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 0.5).abs() < 1e-9, "expected 0.5, got {}", val);
@@ -103,7 +103,7 @@ fn linramp() {
#[test]
fn expramp() {
let ctx = ctx_with(|c| c.beat = 0.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 expramp", &ctx).unwrap();
let val = stack_float(&f);
let expected = 0.5_f64.powf(3.0);
@@ -113,7 +113,7 @@ fn expramp() {
#[test]
fn logramp() {
let ctx = ctx_with(|c| c.beat = 0.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 logramp", &ctx).unwrap();
let val = stack_float(&f);
let expected = 0.5_f64.powf(0.3);
@@ -123,7 +123,7 @@ fn logramp() {
#[test]
fn ramp_with_range() {
let ctx = ctx_with(|c| c.beat = 0.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 1.0 ramp 200.0 800.0 range", &ctx).unwrap();
let val = stack_float(&f);
assert!((val - 500.0).abs() < 1e-9, "expected 500.0, got {}", val);
@@ -132,7 +132,7 @@ fn ramp_with_range() {
#[test]
fn perlin_deterministic() {
let ctx = ctx_with(|c| c.beat = 2.7);
let mut f = forth();
let f = forth();
f.evaluate("1.0 perlin", &ctx).unwrap();
let val1 = stack_float(&f);
f.evaluate("1.0 perlin", &ctx).unwrap();
@@ -144,7 +144,7 @@ fn perlin_deterministic() {
fn perlin_in_range() {
for i in 0..100 {
let ctx = ctx_with(|c| c.beat = i as f64 * 0.1);
let mut f = forth();
let f = forth();
f.evaluate("1.0 perlin", &ctx).unwrap();
let val = stack_float(&f);
assert!(val >= 0.0 && val <= 1.0, "perlin out of range: {}", val);
@@ -155,7 +155,7 @@ fn perlin_in_range() {
fn perlin_varies() {
let ctx1 = ctx_with(|c| c.beat = 0.5);
let ctx2 = ctx_with(|c| c.beat = 1.5);
let mut f = forth();
let f = forth();
f.evaluate("1.0 perlin", &ctx1).unwrap();
let val1 = stack_float(&f);
f.evaluate("1.0 perlin", &ctx2).unwrap();
@@ -165,7 +165,7 @@ fn perlin_varies() {
#[test]
fn perlin_smooth() {
let mut f = forth();
let f = forth();
let mut prev = 0.0;
for i in 0..100 {
let ctx = ctx_with(|c| c.beat = i as f64 * 0.01);
@@ -181,7 +181,7 @@ fn perlin_smooth() {
#[test]
fn perlin_with_range() {
let ctx = ctx_with(|c| c.beat = 1.3);
let mut f = forth();
let f = forth();
f.evaluate("1.0 perlin 200.0 800.0 range", &ctx).unwrap();
let val = stack_float(&f);
assert!(val >= 200.0 && val <= 800.0, "perlin+range out of bounds: {}", val);