From 49fec386acdac80fd99aba3ce08b853a63e93955 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 14 Apr 2024 17:47:28 +0200 Subject: [PATCH 01/28] wip cyma --- Cargo.lock | 11 +++++++ Cargo.toml | 1 + src/editor.rs | 84 +++++++++++++++++++++++++++++++++++++++++++++++++-- src/lib.rs | 19 +++++++++++- 4 files changed, 112 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f18cee8..96b943e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1119,6 +1119,16 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "cyma" +version = "0.1.0" +source = "git+https://github.com/223230/cyma.git#6e54760b784f3eb9437b97f10499319ccade61a9" +dependencies = [ + "lazy_static", + "nih_plug", + "nih_plug_vizia", +] + [[package]] name = "dasp_sample" version = "0.11.0" @@ -1968,6 +1978,7 @@ name = "lamb" version = "1.2.0" dependencies = [ "atomic_float", + "cyma", "default-boxed", "faust-build", "faust-types", diff --git a/Cargo.toml b/Cargo.toml index d09553d..72b3f57 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,7 @@ faust-types = { git = "https://github.com/Frando/rust-faust" } nih_plug_vizia = { git = "https://github.com/robbert-vdh/nih-plug.git" } atomic_float = "0.1" default-boxed = { version = "0.2.0", optional=true } +cyma = { git = "https://github.com/223230/cyma.git" } [profile.release] lto = "thin" diff --git a/src/editor.rs b/src/editor.rs index baf6119..b30c49b 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -6,16 +6,42 @@ use nih_plug_vizia::vizia::prelude::*; use nih_plug_vizia::widgets::*; use nih_plug_vizia::{assets, create_vizia_editor, ViziaState, ViziaTheming}; use std::sync::atomic::Ordering; -use std::sync::Arc; +use std::sync::{Arc, Mutex}; + +use cyma::{ + utils::{PeakBuffer, RingBuffer, ValueScaling, WaveformBuffer}, + visualizers::{ + Graph, Grid, Lissajous, LissajousGrid, Meter, Oscilloscope, UnitRuler, Waveform, + }, +}; include!("gain_reduction_meter.rs"); -#[derive(Lens)] +#[derive(Lens, Clone)] struct LambData { params: Arc, peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, + peak_buffer: Arc>, +} + +impl LambData { + pub(crate) fn new( + params: Arc, + peak_meter: Arc, + gain_reduction_left: Arc, + gain_reduction_right: Arc, + peak_buffer: Arc>, + ) -> Self { + Self { + params, + peak_meter, + gain_reduction_left, + gain_reduction_right, + peak_buffer, + } + } } impl Model for LambData {} @@ -31,6 +57,7 @@ pub(crate) fn create( peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, + peak_buffer: Arc>, editor_state: Arc, ) -> Option> { create_vizia_editor(editor_state, ViziaTheming::Custom, move |cx, _| { @@ -46,6 +73,7 @@ pub(crate) fn create( peak_meter: peak_meter.clone(), gain_reduction_left: gain_reduction_left.clone(), gain_reduction_right: gain_reduction_right.clone(), + peak_buffer: peak_buffer.clone(), } .build(cx); @@ -162,6 +190,7 @@ pub(crate) fn create( .height(Auto) .width(Percentage(100.0)); + peak_graph(cx); // meters VStack::new(cx, |cx| { Label::new(cx, "input level").class("fader-label"); @@ -361,3 +390,54 @@ impl>> View ); } } + +/// Draws a peak graph with a grid backdrop, unit ruler, and a peak meter to side. +fn peak_graph(cx: &mut Context) { + HStack::new(cx, |cx| { + ZStack::new(cx, |cx| { + Grid::new( + cx, + (-32.0, 8.0), + 0.0, + vec![6.0, 0.0, -6.0, -12.0, -18.0, -24.0, -30.0], + ) + .color(Color::rgb(60, 60, 60)); + + Graph::new(cx, LambData::peak_buffer, (-32.0, 6.0), ValueScaling::Decibels) + .color(Color::rgba(255, 255, 255, 160)) + .background_color(Color::rgba(255, 255, 255, 60)); + }) + .background_color(Color::rgb(16, 16, 16)); + + UnitRuler::new( + cx, + (-32.0, 8.0), + vec![ + (6.0, "6db"), + (0.0, "0db"), + (-6.0, "-6db"), + (-12.0, "-12db"), + (-18.0, "-18db"), + (-24.0, "-24db"), + (-30.0, "-30db"), + ], + Orientation::Vertical, + ) + .font_size(12.) + .color(Color::rgb(160, 160, 160)) + .width(Pixels(32.)); + + Meter::new( + cx, + LambData::peak_buffer, + (-32.0, 6.0), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .width(Pixels(32.0)) + .background_color(Color::rgb(60, 60, 60)); + }) + .col_between(Pixels(8.)) + .border_color(Color::rgb(80, 80, 80)) + .border_width(Pixels(1.)); +} diff --git a/src/lib.rs b/src/lib.rs index cb28d44..0ade825 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,11 @@ use faust_types::FaustDsp; use nih_plug::prelude::*; use nih_plug_vizia::ViziaState; -use std::sync::Arc; +use std::sync::{Arc, Mutex}; mod buffer; mod dsp; use buffer::*; +use cyma::utils::{PeakBuffer, RingBuffer, VisualizerBuffer, WaveformBuffer}; use default_boxed::DefaultBoxed; @@ -36,6 +37,9 @@ pub struct Lamb { peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, + + // These buffers will hold the sample data for the visualizers. + peak_buffer: Arc>, } impl Default for Lamb { fn default() -> Self { @@ -54,6 +58,7 @@ impl Default for Lamb { temp_output_buffer_l : f64::default_boxed_array::(), temp_output_buffer_r : f64::default_boxed_array::(), sample_rate: 48000.0, + peak_buffer: Arc::new(Mutex::new(PeakBuffer::new(800, 48000.0, 10.0))), } } } @@ -121,6 +126,13 @@ impl Plugin for Lamb { self.sample_rate = buffer_config.sample_rate; + match self.peak_buffer.lock() { + Ok(mut buffer) => { + buffer.set_sample_rate(buffer_config.sample_rate); + } + Err(_) => return false, + } + true } @@ -135,6 +147,7 @@ impl Plugin for Lamb { self.peak_meter.clone(), self.gain_reduction_left.clone(), self.gain_reduction_right.clone(), + self.peak_buffer.clone(), self.params.editor_state.clone(), ) } @@ -181,6 +194,10 @@ impl Plugin for Lamb { .expect("no GR read") as f32, std::sync::atomic::Ordering::Relaxed, ); + self.peak_buffer + .lock() + .unwrap() + .enqueue_buffer(buffer, None); } } From e3364b8bfeca784d0b59aa5613030d3230b64ae7 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 15 Apr 2024 00:06:57 +0200 Subject: [PATCH 02/28] working cyma --- src/editor.rs | 53 +++++++++------ src/lib.rs | 182 ++++++++++++++++++++++++++------------------------ 2 files changed, 125 insertions(+), 110 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index b30c49b..935137e 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -20,7 +20,7 @@ include!("gain_reduction_meter.rs"); #[derive(Lens, Clone)] struct LambData { params: Arc, - peak_meter: Arc, + // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, peak_buffer: Arc>, @@ -29,14 +29,14 @@ struct LambData { impl LambData { pub(crate) fn new( params: Arc, - peak_meter: Arc, + // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, peak_buffer: Arc>, ) -> Self { Self { params, - peak_meter, + // peak_meter, gain_reduction_left, gain_reduction_right, peak_buffer, @@ -49,12 +49,13 @@ impl Model for LambData {} // Makes sense to also define this here, makes it a bit easier to keep track of pub(crate) fn default_state() -> Arc { // width , height - ViziaState::new(|| (((16.0 / 9.0) * 720.0) as u32, 720)) + // ViziaState::new(|| (((16.0 / 9.0) * 720.0) as u32, 720)) + ViziaState::new(|| (1280 as u32, 960)) } pub(crate) fn create( params: Arc, - peak_meter: Arc, + // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, peak_buffer: Arc>, @@ -70,7 +71,7 @@ pub(crate) fn create( LambData { params: params.clone(), - peak_meter: peak_meter.clone(), + // peak_meter: peak_meter.clone(), gain_reduction_left: gain_reduction_left.clone(), gain_reduction_right: gain_reduction_right.clone(), peak_buffer: peak_buffer.clone(), @@ -182,7 +183,7 @@ pub(crate) fn create( .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) .bottom(Pixels(6.0)); Label::new(cx, "").class("fader-label"); // spacer - AttackReleaseGraph::new(cx, LambData::params).height(Pixels(372.0)); + AttackReleaseGraph::new(cx, LambData::params).height(Pixels(373.0)); }) // graph + zoom .height(Auto) .class("center"); @@ -193,13 +194,13 @@ pub(crate) fn create( peak_graph(cx); // meters VStack::new(cx, |cx| { - Label::new(cx, "input level").class("fader-label"); - PeakMeter::new( - cx, - LambData::peak_meter - .map(|peak_meter| util::gain_to_db(peak_meter.load(Ordering::Relaxed))), - Some(Duration::from_millis(600)), - ); + // Label::new(cx, "input level").class("fader-label"); + // PeakMeter::new( + // cx, + // LambData::peak_meter + // .map(|peak_meter| util::gain_to_db(peak_meter.load(Ordering::Relaxed))), + // Some(Duration::from_millis(600)), + // ); Label::new(cx, "gain reduction left").class("fader-label"); GainReductionMeter::new( cx, @@ -401,13 +402,16 @@ fn peak_graph(cx: &mut Context) { 0.0, vec![6.0, 0.0, -6.0, -12.0, -18.0, -24.0, -30.0], ) - .color(Color::rgb(60, 60, 60)); + .color(Color::rgb(60, 60, 60)) + ; Graph::new(cx, LambData::peak_buffer, (-32.0, 6.0), ValueScaling::Decibels) - .color(Color::rgba(255, 255, 255, 160)) - .background_color(Color::rgba(255, 255, 255, 60)); + .color(Color::rgba(0, 0, 0, 160)) + .background_color(Color::rgba(16, 16, 16, 60)) + ; }) - .background_color(Color::rgb(16, 16, 16)); + // .background_color(Color::rgb(16, 16, 16)) + ; UnitRuler::new( cx, @@ -435,9 +439,14 @@ fn peak_graph(cx: &mut Context) { Orientation::Vertical, ) .width(Pixels(32.0)) - .background_color(Color::rgb(60, 60, 60)); + .color(Color::rgb(0, 0, 0)) + .background_color(Color::rgb(80, 80, 80)) + ; }) - .col_between(Pixels(8.)) - .border_color(Color::rgb(80, 80, 80)) - .border_width(Pixels(1.)); + .top(Pixels(13.0)) + .height(Pixels(280.0)) + .width(Percentage(100.0)) + .col_between(Pixels(8.)) + .border_color(Color::rgb(80, 80, 80)) + .border_width(Pixels(1.)); } diff --git a/src/lib.rs b/src/lib.rs index 0ade825..f97c6d6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,7 +16,7 @@ const MAX_SOUNDCARD_BUFFER_SIZE: usize = 32768; mod editor; /// The time it takes for the peak meter to decay by 12 dB after switching to complete silence. -const PEAK_METER_DECAY_MS: f64 = 150.0; +// const PEAK_METER_DECAY_MS: f64 = 150.0; pub struct Lamb { params: Arc, @@ -34,7 +34,7 @@ pub struct Lamb { /// idea to put all of that in a struct behind a single `Arc`. /// /// This is stored as voltage gain. - peak_meter: Arc, + // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, @@ -47,7 +47,7 @@ impl Default for Lamb { params: Arc::new(LambParams::default()), peak_meter_decay_weight: 1.0, - peak_meter: Arc::new(AtomicF32::new(util::MINUS_INFINITY_DB)), + // peak_meter: Arc::new(AtomicF32::new(util::MINUS_INFINITY_DB)), gain_reduction_left: Arc::new(AtomicF32::new(0.0)), gain_reduction_right: Arc::new(AtomicF32::new(0.0)), @@ -120,9 +120,9 @@ impl Plugin for Lamb { // After `PEAK_METER_DECAY_MS` milliseconds of pure silence, the peak meter's value should // have dropped by 12 dB - self.peak_meter_decay_weight = 0.25f64 - .powf((buffer_config.sample_rate as f64 * PEAK_METER_DECAY_MS / 1000.0).recip()) - as f32; + // self.peak_meter_decay_weight = 0.25f64 + // .powf((buffer_config.sample_rate as f64 * PEAK_METER_DECAY_MS / 1000.0).recip()) + // as f32; self.sample_rate = buffer_config.sample_rate; @@ -144,7 +144,7 @@ impl Plugin for Lamb { fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { editor::create( self.params.clone(), - self.peak_meter.clone(), + // self.peak_meter.clone(), self.gain_reduction_left.clone(), self.gain_reduction_right.clone(), self.peak_buffer.clone(), @@ -161,45 +161,51 @@ impl Plugin for Lamb { let count = buffer.samples() as i32; self.accum_buffer.read_from_buffer(buffer); - for channel_samples in buffer.iter_samples() { - let mut amplitude = 0.0; - let num_samples = channel_samples.len(); - - for sample in channel_samples { - amplitude += *sample; - } - // To save resources, a plugin can (and probably should!) only perform expensive - // calculations that are only displayed on the GUI while the GUI is open - if self.params.editor_state.is_open() { - amplitude = (amplitude / num_samples as f32).abs(); - let current_peak_meter = self.peak_meter.load(std::sync::atomic::Ordering::Relaxed); - let new_peak_meter = if amplitude > current_peak_meter { - amplitude - } else { - current_peak_meter * self.peak_meter_decay_weight - + amplitude * (1.0 - self.peak_meter_decay_weight) - }; - - self.peak_meter - .store(new_peak_meter, std::sync::atomic::Ordering::Relaxed); - self.gain_reduction_left.store( - self.dsp - .get_param(GAIN_REDUCTION_LEFT_PI) - .expect("no GR read") as f32, - std::sync::atomic::Ordering::Relaxed, - ); - self.gain_reduction_right.store( - self.dsp - .get_param(GAIN_REDUCTION_RIGHT_PI) - .expect("no GR read") as f32, - std::sync::atomic::Ordering::Relaxed, - ); - self.peak_buffer - .lock() - .unwrap() - .enqueue_buffer(buffer, None); - } + // for channel_samples in buffer.iter_samples() { + // let mut amplitude = 0.0; + // let num_samples = channel_samples.len(); + + // for sample in channel_samples { + // amplitude += *sample; + // } + + // To save resources, a plugin can (and probably should!) only perform expensive + // calculations that are only displayed on the GUI while the GUI is open + if self.params.editor_state.is_open() { + // amplitude = (amplitude / num_samples as f32).abs(); + // let current_peak_meter = self.peak_meter.load(std::sync::atomic::Ordering::Relaxed); + // let new_peak_meter = if amplitude > current_peak_meter { + // amplitude + // } else { + // current_peak_meter * self.peak_meter_decay_weight + // + amplitude * (1.0 - self.peak_meter_decay_weight) + // }; + + // self.peak_meter + // .store(new_peak_meter, std::sync::atomic::Ordering::Relaxed); + self.gain_reduction_left.store( + self.dsp + .get_param(GAIN_REDUCTION_LEFT_PI) + .expect("no GR read") as f32, + std::sync::atomic::Ordering::Relaxed, + ); + self.gain_reduction_right.store( + self.dsp + .get_param(GAIN_REDUCTION_RIGHT_PI) + .expect("no GR read") as f32, + std::sync::atomic::Ordering::Relaxed, + ); + self.peak_buffer + .lock() + .unwrap() + .enqueue_buffer(buffer, None); } + // } + + // To save resources, a plugin can (and probably should!) only perform expensive + // calculations that are only displayed on the GUI while the GUI is open + // if self.params.editor_state.is_open() { + // } let output = buffer.as_slice(); let bypass: f64 = match self.params.bypass.value() { @@ -214,51 +220,51 @@ impl Plugin for Lamb { }; self.dsp.set_param(LATENCY_MODE_PI, latency_mode); self.dsp - .set_param(INPUT_GAIN_PI, self.params.input_gain.value() as f64); - self.dsp - .set_param(STRENGTH_PI, self.params.strength.value() as f64); - self.dsp - .set_param(THRESH_PI, self.params.thresh.value() as f64); - self.dsp - .set_param(ATTACK_PI, self.params.attack.value() as f64); - self.dsp - .set_param(ATTACK_SHAPE_PI, self.params.attack_shape.value() as f64); - self.dsp - .set_param(RELEASE_PI, self.params.release.value() as f64); - self.dsp - .set_param(RELEASE_SHAPE_PI, self.params.release_shape.value() as f64); - self.dsp - .set_param(RELEASE_HOLD_PI, self.params.release_hold.value() as f64); - self.dsp.set_param(KNEE_PI, self.params.knee.value() as f64); - self.dsp.set_param(LINK_PI, self.params.link.value() as f64); - self.dsp.set_param( - ADAPTIVE_RELEASE_PI, - self.params.adaptive_release.value() as f64, - ); - self.dsp - .set_param(LOOKAHEAD_PI, self.params.lookahead.value() as f64); - self.dsp - .set_param(OUTPUT_GAIN_PI, self.params.output_gain.value() as f64); - - self.dsp.compute( - count, - &self.accum_buffer.slice2d(), - &mut [ - &mut self.temp_output_buffer_l, - &mut self.temp_output_buffer_r, - ], - ); - - for i in 0..count as usize { - output[0][i] = self.temp_output_buffer_l[i] as f32; - output[1][i] = self.temp_output_buffer_r[i] as f32; - } + .set_param(INPUT_GAIN_PI, self.params.input_gain.value() as f64); + self.dsp + .set_param(STRENGTH_PI, self.params.strength.value() as f64); + self.dsp + .set_param(THRESH_PI, self.params.thresh.value() as f64); + self.dsp + .set_param(ATTACK_PI, self.params.attack.value() as f64); + self.dsp + .set_param(ATTACK_SHAPE_PI, self.params.attack_shape.value() as f64); + self.dsp + .set_param(RELEASE_PI, self.params.release.value() as f64); + self.dsp + .set_param(RELEASE_SHAPE_PI, self.params.release_shape.value() as f64); + self.dsp + .set_param(RELEASE_HOLD_PI, self.params.release_hold.value() as f64); + self.dsp.set_param(KNEE_PI, self.params.knee.value() as f64); + self.dsp.set_param(LINK_PI, self.params.link.value() as f64); + self.dsp.set_param( + ADAPTIVE_RELEASE_PI, + self.params.adaptive_release.value() as f64, + ); + self.dsp + .set_param(LOOKAHEAD_PI, self.params.lookahead.value() as f64); + self.dsp + .set_param(OUTPUT_GAIN_PI, self.params.output_gain.value() as f64); + + self.dsp.compute( + count, + &self.accum_buffer.slice2d(), + &mut [ + &mut self.temp_output_buffer_l, + &mut self.temp_output_buffer_r, + ], + ); + + for i in 0..count as usize { + output[0][i] = self.temp_output_buffer_l[i] as f32; + output[1][i] = self.temp_output_buffer_r[i] as f32; + } - let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; - context.set_latency_samples(latency_samples); + let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; + context.set_latency_samples(latency_samples); - ProcessStatus::Normal - } + ProcessStatus::Normal + } } impl ClapPlugin for Lamb { From a2947de556f263610c14ad6a15a430bb7fc1afb7 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 15 Apr 2024 08:10:30 +0200 Subject: [PATCH 03/28] less imports --- src/editor.rs | 4 ++-- src/lib.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 935137e..eb87015 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -9,9 +9,9 @@ use std::sync::atomic::Ordering; use std::sync::{Arc, Mutex}; use cyma::{ - utils::{PeakBuffer, RingBuffer, ValueScaling, WaveformBuffer}, + utils::{PeakBuffer, ValueScaling}, visualizers::{ - Graph, Grid, Lissajous, LissajousGrid, Meter, Oscilloscope, UnitRuler, Waveform, + Graph, Grid, Meter, UnitRuler, }, }; diff --git a/src/lib.rs b/src/lib.rs index f97c6d6..c4a32b0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,7 +5,7 @@ use std::sync::{Arc, Mutex}; mod buffer; mod dsp; use buffer::*; -use cyma::utils::{PeakBuffer, RingBuffer, VisualizerBuffer, WaveformBuffer}; +use cyma::utils::{PeakBuffer, VisualizerBuffer}; use default_boxed::DefaultBoxed; From 680d3a71200bc6483dad6d662939c5c113adba7d Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 15 Apr 2024 11:20:38 +0200 Subject: [PATCH 04/28] wip --- src/editor.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index eb87015..69e0513 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -50,7 +50,8 @@ impl Model for LambData {} pub(crate) fn default_state() -> Arc { // width , height // ViziaState::new(|| (((16.0 / 9.0) * 720.0) as u32, 720)) - ViziaState::new(|| (1280 as u32, 960)) + // ViziaState::new(|| (1280, 960)) + ViziaState::new(|| (1200, 900)) } pub(crate) fn create( @@ -191,9 +192,9 @@ pub(crate) fn create( .height(Auto) .width(Percentage(100.0)); - peak_graph(cx); // meters VStack::new(cx, |cx| { + peak_graph(cx); // Label::new(cx, "input level").class("fader-label"); // PeakMeter::new( // cx, @@ -444,7 +445,8 @@ fn peak_graph(cx: &mut Context) { ; }) .top(Pixels(13.0)) - .height(Pixels(280.0)) + // .height(Pixels(280.0)) + .height(Pixels(200.0)) .width(Percentage(100.0)) .col_between(Pixels(8.)) .border_color(Color::rgb(80, 80, 80)) From 84844794cccdb1871f44e72b8ea1846ca903855e Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 15 Apr 2024 15:38:54 +0200 Subject: [PATCH 05/28] add GR outputs to DSP --- src/dsp.rs | 2607 ++++++++++++++++++++++++++-------------------------- src/lib.rs | 12 +- 2 files changed, 1312 insertions(+), 1307 deletions(-) diff --git a/src/dsp.rs b/src/dsp.rs index 68a2c7c..2db5a43 100644 --- a/src/dsp.rs +++ b/src/dsp.rs @@ -5,7 +5,7 @@ license: "AGPLv3" name: "lamb-rs" version: "0.1" Code generated with Faust 2.72.14 (https://faust.grame.fr) -Compilation options: -a /run/user/1001/.tmpYD7txu -lang rust -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -double -ftz 0 +Compilation options: -a /run/user/1001/.tmpGFKYe5 -lang rust -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -double -ftz 0 ------------------------------------------------------------ */ #![allow(clippy::all)] #![allow(unused_parens)] @@ -43,12 +43,12 @@ impl mydspSIG0 { fn fillmydspSIG0(&mut self, count: i32, table: &mut[F64]) { for i1 in 0..count { self.iRec13[0] = i32::wrapping_add(self.iRec13[1], 1); - let mut iTemp63: i32 = i32::wrapping_add(self.iRec13[0], -1); - let mut fTemp64: F64 = (iTemp63 % 3) as F64 as i32 as F64; - let mut fTemp65: F64 = 0.5 * fTemp64; - let mut fTemp66: F64 = F64::powf(fTemp65, 0.21 * fTemp64 + 1.0); - let mut fTemp67: F64 = (0.3333333333333333 * (iTemp63 % 196608) as F64) as i32 as F64; - table[i1 as usize] = F64::min(1.0, F64::max(0.0, if (fTemp65 == 0.0) as i32 != 0 {0.5 * (F64::sin(4.793763109162727e-05 * fTemp67 + 4.71238898038469) + 1.0)} else {0.5 * (F64::sin(3.141592653589793 * ((1.0 - F64::exp(-(3.692683299000534e-05 * fTemp66 * fTemp67))) / (1.0 - F64::exp(-(2.42 * fTemp66)))) + 4.71238898038469) + 1.0)})); + let mut iTemp64: i32 = i32::wrapping_add(self.iRec13[0], -1); + let mut fTemp65: F64 = (iTemp64 % 3) as F64 as i32 as F64; + let mut fTemp66: F64 = 0.5 * fTemp65; + let mut fTemp67: F64 = F64::powf(fTemp66, 0.21 * fTemp65 + 1.0); + let mut fTemp68: F64 = (0.3333333333333333 * (iTemp64 % 196608) as F64) as i32 as F64; + table[i1 as usize] = F64::min(1.0, F64::max(0.0, if (fTemp66 == 0.0) as i32 != 0 {0.5 * (F64::sin(4.793763109162727e-05 * fTemp68 + 4.71238898038469) + 1.0)} else {0.5 * (F64::sin(3.141592653589793 * ((1.0 - F64::exp(-(3.692683299000534e-05 * fTemp67 * fTemp68))) / (1.0 - F64::exp(-(2.42 * fTemp67)))) + 4.71238898038469) + 1.0)})); self.iRec13[1] = self.iRec13[0]; } } @@ -315,7 +315,7 @@ impl FaustDsp for mydsp { m.declare("basics.lib/tabulateNd:author", r"Bart Brouns"); m.declare("basics.lib/tabulateNd:license", r"AGPL-3.0"); m.declare("basics.lib/version", r"1.15.0"); - m.declare("compile_options", r"-a /run/user/1001/.tmpYD7txu -lang rust -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -double -ftz 0"); + m.declare("compile_options", r"-a /run/user/1001/.tmpGFKYe5 -lang rust -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -double -ftz 0"); m.declare("filename", r"lamb-rs.dsp"); m.declare("interpolators.lib/interpolate_linear:author", r"Stéphane Letz"); m.declare("interpolators.lib/interpolate_linear:licence", r"MIT"); @@ -349,7 +349,7 @@ impl FaustDsp for mydsp { return 2; } fn get_num_outputs(&self) -> i32 { - return 2; + return 4; } fn class_init(sample_rate: i32) { @@ -738,10 +738,12 @@ impl FaustDsp for mydsp { } else { panic!("wrong number of inputs"); }; - let (outputs0, outputs1) = if let [outputs0, outputs1, ..] = outputs { + let (outputs0, outputs1, outputs2, outputs3) = if let [outputs0, outputs1, outputs2, outputs3, ..] = outputs { let outputs0 = outputs0[..count as usize].iter_mut(); let outputs1 = outputs1[..count as usize].iter_mut(); - (outputs0, outputs1) + let outputs2 = outputs2[..count as usize].iter_mut(); + let outputs3 = outputs3[..count as usize].iter_mut(); + (outputs0, outputs1, outputs2, outputs3) } else { panic!("wrong number of outputs"); }; @@ -819,1305 +821,1308 @@ impl FaustDsp for mydsp { self.fHbargraph1 = if (fSlow69) as i32 != 0 {4.8e+03} else {fSlow68}; let mut iSlow71: i32 = (self.fHbargraph1) as i32; let mut fSlow72: F64 = self.fConst3 * F64::powf(1e+01, 0.05 * self.fHslider12); - let zipped_iterators = inputs0.zip(inputs1).zip(outputs0).zip(outputs1); - for (((input0, input1), output0), output1) in zipped_iterators { + let zipped_iterators = inputs0.zip(inputs1).zip(outputs0).zip(outputs1).zip(outputs2).zip(outputs3); + for (((((input0, input1), output0), output1), output2), output3) in zipped_iterators { let mut fTemp0: F64 = self.fConst1 + self.fRec0[1]; let mut fTemp1: F64 = self.fRec0[1] - self.fConst1; self.fRec0[0] = if (fTemp0 < fSlow0) as i32 != 0 {fTemp0} else {if (fTemp1 > fSlow0) as i32 != 0 {fTemp1} else {fSlow0}}; let mut fTemp2: F64 = F64::sin(6.283185307179586 * (0.5 * self.fRec0[0] + 0.75)) + 1.0; - let mut fTemp3: F64 = 1.0 - 0.5 * fTemp2; - let mut fTemp4: F64 = self.fRec2[((i32::wrapping_sub(self.IOTA0, 1)) & 8191) as usize]; + let mut fTemp3: F64 = 0.5 * fTemp2; + let mut fTemp4: F64 = 1.0 - fTemp3; + let mut fTemp5: F64 = self.fRec2[((i32::wrapping_sub(self.IOTA0, 1)) & 8191) as usize]; self.fRec4[0] = fSlow5 + self.fConst4 * self.fRec4[1]; - let mut fTemp5: F64 = F64::max(0.5, self.fRec4[0]) + -0.5; - let mut fTemp6: F64 = 4.0 * fTemp5; - let mut fTemp7: F64 = 10.588235294117647 * (F64::max(0.15, self.fRec4[0]) + -0.15); - let mut fTemp8: F64 = 15.0 - (fTemp7 + fTemp6); - let mut fTemp9: F64 = 12.0 - fTemp7; - let mut fTemp10: F64 = fTemp7 + -12.0; - let mut fTemp11: F64 = 3.0 - fTemp6; + let mut fTemp6: F64 = F64::max(0.5, self.fRec4[0]) + -0.5; + let mut fTemp7: F64 = 4.0 * fTemp6; + let mut fTemp8: F64 = 10.588235294117647 * (F64::max(0.15, self.fRec4[0]) + -0.15); + let mut fTemp9: F64 = 15.0 - (fTemp8 + fTemp7); + let mut fTemp10: F64 = 12.0 - fTemp8; + let mut fTemp11: F64 = fTemp8 + -12.0; + let mut fTemp12: F64 = 3.0 - fTemp7; self.fRec11[0] = fSlow10 + self.fConst4 * self.fRec11[1]; - let mut fTemp12: F64 = *input0; - self.fVec0[(self.IOTA0 & 32767) as usize] = fTemp12; - let mut fTemp13: F64 = fTemp12 * self.fRec11[0]; - self.fVec1[(self.IOTA0 & 32767) as usize] = fTemp13; - let mut fTemp14: F64 = F64::abs(fTemp13); - let mut fTemp15: F64 = *input1; - self.fVec2[(self.IOTA0 & 32767) as usize] = fTemp15; - let mut fTemp16: F64 = fTemp15 * self.fRec11[0]; - self.fVec3[(self.IOTA0 & 32767) as usize] = fTemp16; - let mut fTemp17: F64 = F64::abs(fTemp16); - let mut fTemp18: F64 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, F64::max(fTemp14, fTemp17))); - let mut iTemp19: i32 = ((fTemp18 > fSlow11) as i32) + ((fTemp18 > fSlow9) as i32); - let mut fTemp20: F64 = fTemp18 - fSlow8; - let mut fTemp21: F64 = F64::powf(1e+01, -(0.05 * F64::max(0.0, if (iTemp19 == 0) as i32 != 0 {0.0} else {if (iTemp19 == 1) as i32 != 0 {fSlow12 * mydsp_faustpower2_f(fSlow7 + fTemp20)} else {fTemp20}}))); - let mut fTemp22: F64 = 3.0 * fTemp5; - let mut fTemp23: F64 = 4.0 * (F64::max(0.25, self.fRec4[0]) + -0.25); - let mut fTemp24: F64 = 9.0 - fTemp23; - let mut fTemp25: F64 = self.fRec5[1] - self.fRec6[1]; - let mut fTemp26: F64 = if (fTemp21 > self.fRec10[1]) as i32 != 0 {F64::exp(-(self.fConst7 / F64::max(2.220446049250313e-16, fSlow14 / F64::max(1.0 - (F64::max(fTemp23 + -9.0, F64::min(2.0 - fTemp22, fTemp25)) + fTemp24) / (11.0 - (fTemp23 + fTemp22)), 2.220446049250313e-16))))} else {self.fConst6}; - self.fRec10[0] = self.fRec10[1] * fTemp26 + fTemp21 * (1.0 - fTemp26); - let mut fTemp27: F64 = if (self.fRec10[0] > self.fRec9[1]) as i32 != 0 {0.0} else {self.fConst6}; - self.fRec9[0] = self.fRec9[1] * fTemp27 + self.fRec10[0] * (1.0 - fTemp27); - let mut fTemp28: F64 = if (self.fRec9[0] > self.fRec8[1]) as i32 != 0 {0.0} else {self.fConst6}; - self.fRec8[0] = self.fRec8[1] * fTemp28 + self.fRec9[0] * (1.0 - fTemp28); - let mut fTemp29: F64 = if (self.fRec8[0] > self.fRec7[1]) as i32 != 0 {0.0} else {self.fConst6}; - self.fRec7[0] = self.fRec7[1] * fTemp29 + self.fRec8[0] * (1.0 - fTemp29); + let mut fTemp13: F64 = *input0; + self.fVec0[(self.IOTA0 & 32767) as usize] = fTemp13; + let mut fTemp14: F64 = fTemp13 * self.fRec11[0]; + self.fVec1[(self.IOTA0 & 32767) as usize] = fTemp14; + let mut fTemp15: F64 = F64::abs(fTemp14); + let mut fTemp16: F64 = *input1; + self.fVec2[(self.IOTA0 & 32767) as usize] = fTemp16; + let mut fTemp17: F64 = fTemp16 * self.fRec11[0]; + self.fVec3[(self.IOTA0 & 32767) as usize] = fTemp17; + let mut fTemp18: F64 = F64::abs(fTemp17); + let mut fTemp19: F64 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, F64::max(fTemp15, fTemp18))); + let mut iTemp20: i32 = ((fTemp19 > fSlow11) as i32) + ((fTemp19 > fSlow9) as i32); + let mut fTemp21: F64 = fTemp19 - fSlow8; + let mut fTemp22: F64 = F64::powf(1e+01, -(0.05 * F64::max(0.0, if (iTemp20 == 0) as i32 != 0 {0.0} else {if (iTemp20 == 1) as i32 != 0 {fSlow12 * mydsp_faustpower2_f(fSlow7 + fTemp21)} else {fTemp21}}))); + let mut fTemp23: F64 = 3.0 * fTemp6; + let mut fTemp24: F64 = 4.0 * (F64::max(0.25, self.fRec4[0]) + -0.25); + let mut fTemp25: F64 = 9.0 - fTemp24; + let mut fTemp26: F64 = self.fRec5[1] - self.fRec6[1]; + let mut fTemp27: F64 = if (fTemp22 > self.fRec10[1]) as i32 != 0 {F64::exp(-(self.fConst7 / F64::max(2.220446049250313e-16, fSlow14 / F64::max(1.0 - (F64::max(fTemp24 + -9.0, F64::min(2.0 - fTemp23, fTemp26)) + fTemp25) / (11.0 - (fTemp24 + fTemp23)), 2.220446049250313e-16))))} else {self.fConst6}; + self.fRec10[0] = self.fRec10[1] * fTemp27 + fTemp22 * (1.0 - fTemp27); + let mut fTemp28: F64 = if (self.fRec10[0] > self.fRec9[1]) as i32 != 0 {0.0} else {self.fConst6}; + self.fRec9[0] = self.fRec9[1] * fTemp28 + self.fRec10[0] * (1.0 - fTemp28); + let mut fTemp29: F64 = if (self.fRec9[0] > self.fRec8[1]) as i32 != 0 {0.0} else {self.fConst6}; + self.fRec8[0] = self.fRec8[1] * fTemp29 + self.fRec9[0] * (1.0 - fTemp29); + let mut fTemp30: F64 = if (self.fRec8[0] > self.fRec7[1]) as i32 != 0 {0.0} else {self.fConst6}; + self.fRec7[0] = self.fRec7[1] * fTemp30 + self.fRec8[0] * (1.0 - fTemp30); self.fRec5[0] = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, self.fRec7[0])); - let mut fTemp30: F64 = F64::powf(1e+01, 0.05 * (self.fRec5[1] + fTemp24)); - let mut fTemp31: F64 = if (fTemp30 > self.fRec12[1]) as i32 != 0 {F64::exp(-(self.fConst7 / F64::max(2.220446049250313e-16, (0.8161290322580644 * (F64::max(0.69, self.fRec4[0]) + -0.69) + 0.05) * F64::powf(4503599627370496.0, 1.0 - (F64::max(fTemp10, F64::min(fTemp11, fTemp25)) + fTemp9) / fTemp8))))} else {self.fConst8}; - self.fRec12[0] = self.fRec12[1] * fTemp31 + fTemp30 * (1.0 - fTemp31); + let mut fTemp31: F64 = F64::powf(1e+01, 0.05 * (self.fRec5[1] + fTemp25)); + let mut fTemp32: F64 = if (fTemp31 > self.fRec12[1]) as i32 != 0 {F64::exp(-(self.fConst7 / F64::max(2.220446049250313e-16, (0.8161290322580644 * (F64::max(0.69, self.fRec4[0]) + -0.69) + 0.05) * F64::powf(4503599627370496.0, 1.0 - (F64::max(fTemp11, F64::min(fTemp12, fTemp26)) + fTemp10) / fTemp9))))} else {self.fConst8}; + self.fRec12[0] = self.fRec12[1] * fTemp32 + fTemp31 * (1.0 - fTemp32); self.fRec6[0] = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, self.fRec12[0])); - let mut fTemp32: F64 = self.fRec5[0] - self.fRec6[0]; - let mut fTemp33: F64 = F64::powf(1e+01, fSlow16 * F64::min(0.25, self.fRec4[0]) * (self.fRec6[0] + fTemp32 * (F64::max(fTemp10, F64::min(fTemp11, fTemp32)) + fTemp9) / fTemp8)); - let mut fTemp34: F64 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp14)); - let mut fTemp35: F64 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp17)); - let mut fTemp36: F64 = F64::max(fTemp34, fTemp35); - let mut fTemp37: F64 = fTemp34 + fSlow17 * (fTemp36 - fTemp34); - let mut iTemp38: i32 = ((fTemp37 > fSlow11) as i32) + ((fTemp37 > fSlow9) as i32); - let mut fTemp39: F64 = fTemp37 - fSlow8; - let mut fTemp40: F64 = F64::min(fTemp33, F64::powf(1e+01, -(fSlow18 * F64::max(0.0, if (iTemp38 == 0) as i32 != 0 {0.0} else {if (iTemp38 == 1) as i32 != 0 {fSlow12 * mydsp_faustpower2_f(fSlow7 + fTemp39)} else {fTemp39}})))); - self.fVec4[(self.IOTA0 & 16383) as usize] = fTemp40; - let mut fTemp41: F64 = F64::min(fTemp40, self.fVec4[((i32::wrapping_sub(self.IOTA0, 1)) & 16383) as usize]); - self.fVec5[0] = fTemp41; - let mut fTemp42: F64 = F64::min(fTemp41, self.fVec5[2]); - self.fVec6[0] = fTemp42; - let mut fTemp43: F64 = F64::min(fTemp42, self.fVec6[4]); - self.fVec7[0] = fTemp43; - let mut fTemp44: F64 = F64::min(fTemp43, self.fVec7[8]); - self.fVec8[(self.IOTA0 & 31) as usize] = fTemp44; - let mut fTemp45: F64 = F64::min(fTemp44, self.fVec8[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); - self.fVec9[(self.IOTA0 & 63) as usize] = fTemp45; - let mut fTemp46: F64 = F64::min(fTemp45, self.fVec9[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); - self.fVec10[(self.IOTA0 & 127) as usize] = fTemp46; - let mut fTemp47: F64 = F64::min(fTemp46, self.fVec10[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); - self.fVec11[(self.IOTA0 & 255) as usize] = fTemp47; - let mut fTemp48: F64 = F64::min(fTemp47, self.fVec11[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); - self.fVec12[(self.IOTA0 & 511) as usize] = fTemp48; - let mut fTemp49: F64 = F64::min(fTemp48, self.fVec12[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); - self.fVec13[(self.IOTA0 & 1023) as usize] = fTemp49; - let mut fTemp50: F64 = F64::min(fTemp49, self.fVec13[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); - self.fVec14[(self.IOTA0 & 2047) as usize] = fTemp50; - self.fVec15[(self.IOTA0 & 4095) as usize] = F64::min(fTemp50, self.fVec14[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); - self.fRec3[0] = F64::max(F64::min(self.fRec3[1], self.fVec4[((i32::wrapping_sub(self.IOTA0, iSlow21)) & 16383) as usize]), F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow23 != 0 {fTemp40} else {1.7976931348623157e+308}, if iSlow24 != 0 {self.fVec5[iSlow23 as usize]} else {1.7976931348623157e+308}), if iSlow25 != 0 {self.fVec6[iSlow26 as usize]} else {1.7976931348623157e+308}), if iSlow27 != 0 {self.fVec7[iSlow28 as usize]} else {1.7976931348623157e+308}), if iSlow29 != 0 {self.fVec8[((i32::wrapping_sub(self.IOTA0, iSlow30)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow31 != 0 {self.fVec9[((i32::wrapping_sub(self.IOTA0, iSlow32)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow33 != 0 {self.fVec10[((i32::wrapping_sub(self.IOTA0, iSlow34)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow35 != 0 {self.fVec11[((i32::wrapping_sub(self.IOTA0, iSlow36)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow37 != 0 {self.fVec12[((i32::wrapping_sub(self.IOTA0, iSlow38)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow39 != 0 {self.fVec13[((i32::wrapping_sub(self.IOTA0, iSlow40)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow41 != 0 {self.fVec14[((i32::wrapping_sub(self.IOTA0, iSlow42)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow43 != 0 {self.fVec15[((i32::wrapping_sub(self.IOTA0, iSlow44)) & 4095) as usize]} else {1.7976931348623157e+308})); - let mut fTemp51: F64 = F64::min(self.fRec3[0], self.fRec3[1]); - self.fVec16[0] = fTemp51; - let mut fTemp52: F64 = F64::min(fTemp51, self.fVec16[2]); - self.fVec17[0] = fTemp52; - let mut fTemp53: F64 = F64::min(fTemp52, self.fVec17[4]); - self.fVec18[0] = fTemp53; - let mut fTemp54: F64 = F64::min(fTemp53, self.fVec18[8]); - self.fVec19[(self.IOTA0 & 31) as usize] = fTemp54; - let mut fTemp55: F64 = F64::min(fTemp54, self.fVec19[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); - self.fVec20[(self.IOTA0 & 63) as usize] = fTemp55; - let mut fTemp56: F64 = F64::min(fTemp55, self.fVec20[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); - self.fVec21[(self.IOTA0 & 127) as usize] = fTemp56; - let mut fTemp57: F64 = F64::min(fTemp56, self.fVec21[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); - self.fVec22[(self.IOTA0 & 255) as usize] = fTemp57; - let mut fTemp58: F64 = F64::min(fTemp57, self.fVec22[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); - self.fVec23[(self.IOTA0 & 511) as usize] = fTemp58; - let mut fTemp59: F64 = F64::min(fTemp58, self.fVec23[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); - self.fVec24[(self.IOTA0 & 1023) as usize] = fTemp59; - let mut fTemp60: F64 = F64::min(fTemp59, self.fVec24[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); - self.fVec25[(self.IOTA0 & 2047) as usize] = fTemp60; - self.fVec26[(self.IOTA0 & 4095) as usize] = F64::min(fTemp60, self.fVec25[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); - let mut fTemp61: F64 = F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow4 != 0 {self.fRec3[0]} else {1.7976931348623157e+308}, if iSlow45 != 0 {self.fVec16[iSlow4 as usize]} else {1.7976931348623157e+308}), if iSlow46 != 0 {self.fVec17[iSlow47 as usize]} else {1.7976931348623157e+308}), if iSlow48 != 0 {self.fVec18[iSlow49 as usize]} else {1.7976931348623157e+308}), if iSlow50 != 0 {self.fVec19[((i32::wrapping_sub(self.IOTA0, iSlow51)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow52 != 0 {self.fVec20[((i32::wrapping_sub(self.IOTA0, iSlow53)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow54 != 0 {self.fVec21[((i32::wrapping_sub(self.IOTA0, iSlow55)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow56 != 0 {self.fVec22[((i32::wrapping_sub(self.IOTA0, iSlow57)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow58 != 0 {self.fVec23[((i32::wrapping_sub(self.IOTA0, iSlow59)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow60 != 0 {self.fVec24[((i32::wrapping_sub(self.IOTA0, iSlow61)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow62 != 0 {self.fVec25[((i32::wrapping_sub(self.IOTA0, iSlow63)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow64 != 0 {self.fVec26[((i32::wrapping_sub(self.IOTA0, iSlow65)) & 4095) as usize]} else {1.7976931348623157e+308}) - fTemp4; - self.fVec27[0] = fTemp61; - let mut iTemp62: i32 = (fTemp61 > 0.0) as i32; - let mut fTemp68: F64 = if iTemp62 != 0 {fSlow67} else {fSlow66}; - self.fVec28[0] = fTemp68; - let mut fTemp69: F64 = 2.0 * fTemp68; - let mut iTemp70: i32 = (fTemp69) as i32; - let mut iTemp71: i32 = std::cmp::max(0, std::cmp::min(iTemp70, 2)); - let mut iTemp72: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, 98301), 196607)); - let mut fTemp73: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp72, 3)) as usize] }; - let mut fTemp74: F64 = unsafe { ftbl0mydspSIG0[iTemp72 as usize] }; - let mut fTemp75: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp72, 1)) as usize] } - fTemp74; - let mut fTemp76: F64 = fTemp69 - (iTemp70) as F64; - let mut fTemp77: F64 = fTemp74 + fTemp76 * fTemp75 + 0.5 * (fTemp73 - (fTemp74 + fTemp76 * (fTemp75 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp72, 4)) as usize] } - fTemp73)))); - let mut fTemp78: F64 = if iTemp62 != 0 {fTemp77} else {1.0 - fTemp77}; - let mut iTemp79: i32 = (fTemp61 < 0.0) as i32; - let mut fTemp80: F64 = fSlow1 * (iTemp79) as F64 + fSlow13 * (iTemp62) as F64; - self.fVec29[0] = fTemp80; - let mut fTemp81: F64 = self.fConst10 / fTemp80; - let mut fTemp82: F64 = fTemp81 + 0.5; - let mut fTemp83: F64 = 65535.0 * (1.0 - fTemp82); - let mut iTemp84: i32 = (fTemp83) as i32; - let mut iTemp85: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp84, 65535)))), 196607)); - let mut fTemp86: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp85, 3)) as usize] }; - let mut fTemp87: F64 = unsafe { ftbl0mydspSIG0[iTemp85 as usize] }; - let mut fTemp88: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp85, 1)) as usize] } - fTemp87; - let mut fTemp89: F64 = 65535.0 * fTemp82; - let mut iTemp90: i32 = (fTemp89) as i32; - let mut iTemp91: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp90, 65535)))), 196607)); - let mut fTemp92: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp91, 3), 196607))) as usize] }; - let mut fTemp93: F64 = unsafe { ftbl0mydspSIG0[iTemp91 as usize] }; - let mut fTemp94: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp91, 1), 196607))) as usize] } - fTemp93; - let mut fTemp95: F64 = 2.0 * self.fVec28[1]; - let mut iTemp96: i32 = (fTemp95) as i32; - let mut iTemp97: i32 = std::cmp::max(0, std::cmp::min(iTemp96, 2)); - let mut fTemp98: F64 = 65535.0 * (1.0 - self.fRec1[1]); - let mut iTemp99: i32 = (fTemp98) as i32; - let mut iTemp100: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp99, 65535))), iTemp97), 196607)); - let mut fTemp101: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp100, 3), 196607))) as usize] }; - let mut fTemp102: F64 = unsafe { ftbl0mydspSIG0[iTemp100 as usize] }; - let mut fTemp103: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp100, 1), 196607))) as usize] } - fTemp102; - let mut fTemp104: F64 = fTemp95 - (iTemp96) as F64; - let mut fTemp105: F64 = 65535.0 * self.fRec1[1]; - let mut iTemp106: i32 = (fTemp105) as i32; - let mut iTemp107: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp97, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp106, 65535)))), 196607)); - let mut fTemp108: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp107, 3), 196607))) as usize] }; - let mut fTemp109: F64 = unsafe { ftbl0mydspSIG0[iTemp107 as usize] }; - let mut fTemp110: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp107, 1), 196607))) as usize] } - fTemp109; - let mut fTemp111: F64 = self.fRec1[1] + fTemp81; - let mut fTemp112: F64 = 65535.0 * (1.0 - fTemp111); - let mut iTemp113: i32 = (fTemp112) as i32; - let mut iTemp114: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp113, 65535)))), 196607)); - let mut fTemp115: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp114, 3)) as usize] }; - let mut fTemp116: F64 = unsafe { ftbl0mydspSIG0[iTemp114 as usize] }; - let mut fTemp117: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp114, 1)) as usize] } - fTemp116; - let mut fTemp118: F64 = 65535.0 * fTemp111; - let mut iTemp119: i32 = (fTemp118) as i32; - let mut iTemp120: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp119, 65535)))), 196607)); - let mut fTemp121: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp120, 3), 196607))) as usize] }; - let mut fTemp122: F64 = unsafe { ftbl0mydspSIG0[iTemp120 as usize] }; - let mut fTemp123: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp120, 1), 196607))) as usize] } - fTemp122; - let mut fTemp124: F64 = self.fRec1[1] + self.fConst10 * (1.0 / fTemp80 + 1.0 / self.fVec29[1]); - let mut fTemp125: F64 = 65535.0 * (1.0 - fTemp124); - let mut iTemp126: i32 = (fTemp125) as i32; - let mut iTemp127: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp126, 65535))), iTemp71), 196607)); - let mut fTemp128: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp127, 3)) as usize] }; - let mut fTemp129: F64 = unsafe { ftbl0mydspSIG0[iTemp127 as usize] }; - let mut fTemp130: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp127, 1)) as usize] } - fTemp129; - let mut fTemp131: F64 = 65535.0 * fTemp124; - let mut iTemp132: i32 = (fTemp131) as i32; - let mut iTemp133: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp132, 65535)))), 196607)); - let mut fTemp134: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp133, 3), 196607))) as usize] }; - let mut fTemp135: F64 = unsafe { ftbl0mydspSIG0[iTemp133 as usize] }; - let mut fTemp136: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp133, 1), 196607))) as usize] } - fTemp135; - let mut fTemp137: F64 = (if iTemp62 != 0 {fTemp135 + fTemp76 * fTemp136 + (fTemp131 - (iTemp132) as F64) * (fTemp134 - (fTemp135 + fTemp76 * (fTemp136 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp133, 4), 196607))) as usize] } - fTemp134))))} else {1.0 - (fTemp129 + fTemp76 * fTemp130 + (fTemp125 - (iTemp126) as F64) * (fTemp128 - (fTemp129 + fTemp76 * (fTemp130 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp127, 4)) as usize] } - fTemp128)))))} - if iTemp62 != 0 {fTemp122 + fTemp76 * fTemp123 + (fTemp118 - (iTemp119) as F64) * (fTemp121 - (fTemp122 + fTemp76 * (fTemp123 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp120, 4), 196607))) as usize] } - fTemp121))))} else {1.0 - (fTemp116 + fTemp76 * fTemp117 + (fTemp112 - (iTemp113) as F64) * (fTemp115 - (fTemp116 + fTemp76 * (fTemp117 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp114, 4), 196607))) as usize] } - fTemp115)))))}) * self.fVec27[1] / (fTemp61 * (1.0 - if iTemp62 != 0 {fTemp109 + fTemp104 * fTemp110 + (fTemp105 - (iTemp106) as F64) * (fTemp108 - (fTemp109 + fTemp104 * (fTemp110 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp107, 4), 196607))) as usize] } - fTemp108))))} else {1.0 - (fTemp102 + fTemp104 * fTemp103 + (fTemp98 - (iTemp99) as F64) * (fTemp101 - (fTemp102 + fTemp104 * (fTemp103 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp100, 4), 196607))) as usize] } - fTemp101)))))})); - let mut iTemp138: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp93 + fTemp76 * fTemp94 + (fTemp89 - (iTemp90) as F64) * (fTemp92 - (fTemp93 + fTemp76 * (fTemp94 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp91, 4), 196607))) as usize] } - fTemp92))))} else {1.0 - (fTemp87 + fTemp76 * fTemp88 + (fTemp83 - (iTemp84) as F64) * (fTemp86 - (fTemp87 + fTemp76 * (fTemp88 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp85, 4)) as usize] } - fTemp86)))))} - fTemp78) / (1.0 - fTemp78))) as i32; - let mut fTemp139: F64 = if iTemp138 != 0 {1.0} else {0.5}; - let mut fTemp140: F64 = if iTemp138 != 0 {0.5} else {0.0}; - let mut fTemp141: F64 = fTemp140 + fTemp139; - let mut fTemp142: F64 = 0.5 * fTemp141; - let mut fTemp143: F64 = 65535.0 * (1.0 - fTemp142); - let mut iTemp144: i32 = (fTemp143) as i32; - let mut iTemp145: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp144, 65535)))), 196607)); - let mut fTemp146: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp145, 3)) as usize] }; - let mut fTemp147: F64 = unsafe { ftbl0mydspSIG0[iTemp145 as usize] }; - let mut fTemp148: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp145, 1)) as usize] } - fTemp147; - let mut fTemp149: F64 = 32767.5 * fTemp141; - let mut iTemp150: i32 = (fTemp149) as i32; - let mut iTemp151: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp150, 65535)))), 196607)); - let mut fTemp152: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp151, 3)) as usize] }; - let mut fTemp153: F64 = unsafe { ftbl0mydspSIG0[iTemp151 as usize] }; - let mut fTemp154: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp151, 1)) as usize] } - fTemp153; - let mut fTemp155: F64 = if iTemp62 != 0 {fTemp153 + fTemp76 * fTemp154 + (fTemp149 - (iTemp150) as F64) * (fTemp152 - (fTemp153 + fTemp76 * (fTemp154 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp151, 4)) as usize] } - fTemp152))))} else {1.0 - (fTemp147 + fTemp76 * fTemp148 + (fTemp143 - (iTemp144) as F64) * (fTemp146 - (fTemp147 + fTemp76 * (fTemp148 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp145, 4)) as usize] } - fTemp146)))))}; - let mut fTemp156: F64 = fTemp81 + fTemp142; - let mut fTemp157: F64 = 65535.0 * (1.0 - fTemp156); - let mut iTemp158: i32 = (fTemp157) as i32; - let mut iTemp159: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp158, 65535)))), 196607)); - let mut fTemp160: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp159, 3)) as usize] }; - let mut fTemp161: F64 = unsafe { ftbl0mydspSIG0[iTemp159 as usize] }; - let mut fTemp162: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp159, 1)) as usize] } - fTemp161; - let mut fTemp163: F64 = 65535.0 * fTemp156; - let mut iTemp164: i32 = (fTemp163) as i32; - let mut iTemp165: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp164, 65535)))), 196607)); - let mut fTemp166: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp165, 3), 196607))) as usize] }; - let mut fTemp167: F64 = unsafe { ftbl0mydspSIG0[iTemp165 as usize] }; - let mut fTemp168: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp165, 1), 196607))) as usize] } - fTemp167; - let mut iTemp169: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp167 + fTemp76 * fTemp168 + (fTemp163 - (iTemp164) as F64) * (fTemp166 - (fTemp167 + fTemp76 * (fTemp168 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp165, 4), 196607))) as usize] } - fTemp166))))} else {1.0 - (fTemp161 + fTemp76 * fTemp162 + (fTemp157 - (iTemp158) as F64) * (fTemp160 - (fTemp161 + fTemp76 * (fTemp162 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp159, 4)) as usize] } - fTemp160)))))} - fTemp155) / (1.0 - fTemp155))) as i32; - let mut fTemp170: F64 = if iTemp169 != 0 {fTemp139} else {fTemp142}; - let mut fTemp171: F64 = if iTemp169 != 0 {fTemp142} else {fTemp140}; - let mut fTemp172: F64 = fTemp171 + fTemp170; - let mut fTemp173: F64 = 0.5 * fTemp172; - let mut fTemp174: F64 = 65535.0 * (1.0 - fTemp173); - let mut iTemp175: i32 = (fTemp174) as i32; - let mut iTemp176: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp175, 65535)))), 196607)); - let mut fTemp177: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp176, 3)) as usize] }; - let mut fTemp178: F64 = unsafe { ftbl0mydspSIG0[iTemp176 as usize] }; - let mut fTemp179: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp176, 1)) as usize] } - fTemp178; - let mut fTemp180: F64 = 32767.5 * fTemp172; - let mut iTemp181: i32 = (fTemp180) as i32; - let mut iTemp182: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp181, 65535)))), 196607)); - let mut fTemp183: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp182, 3)) as usize] }; - let mut fTemp184: F64 = unsafe { ftbl0mydspSIG0[iTemp182 as usize] }; - let mut fTemp185: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp182, 1)) as usize] } - fTemp184; - let mut fTemp186: F64 = if iTemp62 != 0 {fTemp184 + fTemp76 * fTemp185 + (fTemp180 - (iTemp181) as F64) * (fTemp183 - (fTemp184 + fTemp76 * (fTemp185 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp182, 4)) as usize] } - fTemp183))))} else {1.0 - (fTemp178 + fTemp76 * fTemp179 + (fTemp174 - (iTemp175) as F64) * (fTemp177 - (fTemp178 + fTemp76 * (fTemp179 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp176, 4)) as usize] } - fTemp177)))))}; - let mut fTemp187: F64 = fTemp81 + fTemp173; - let mut fTemp188: F64 = 65535.0 * (1.0 - fTemp187); - let mut iTemp189: i32 = (fTemp188) as i32; - let mut iTemp190: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp189, 65535)))), 196607)); - let mut fTemp191: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp190, 3)) as usize] }; - let mut fTemp192: F64 = unsafe { ftbl0mydspSIG0[iTemp190 as usize] }; - let mut fTemp193: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp190, 1)) as usize] } - fTemp192; - let mut fTemp194: F64 = 65535.0 * fTemp187; - let mut iTemp195: i32 = (fTemp194) as i32; - let mut iTemp196: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp195, 65535)))), 196607)); - let mut fTemp197: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp196, 3), 196607))) as usize] }; - let mut fTemp198: F64 = unsafe { ftbl0mydspSIG0[iTemp196 as usize] }; - let mut fTemp199: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp196, 1), 196607))) as usize] } - fTemp198; - let mut iTemp200: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp198 + fTemp76 * fTemp199 + (fTemp194 - (iTemp195) as F64) * (fTemp197 - (fTemp198 + fTemp76 * (fTemp199 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp196, 4), 196607))) as usize] } - fTemp197))))} else {1.0 - (fTemp192 + fTemp76 * fTemp193 + (fTemp188 - (iTemp189) as F64) * (fTemp191 - (fTemp192 + fTemp76 * (fTemp193 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp190, 4)) as usize] } - fTemp191)))))} - fTemp186) / (1.0 - fTemp186))) as i32; - let mut fTemp201: F64 = if iTemp200 != 0 {fTemp170} else {fTemp173}; - let mut fTemp202: F64 = if iTemp200 != 0 {fTemp173} else {fTemp171}; - let mut fTemp203: F64 = fTemp202 + fTemp201; - let mut fTemp204: F64 = 0.5 * fTemp203; - let mut fTemp205: F64 = 65535.0 * (1.0 - fTemp204); - let mut iTemp206: i32 = (fTemp205) as i32; - let mut iTemp207: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp206, 65535)))), 196607)); - let mut fTemp208: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp207, 3)) as usize] }; - let mut fTemp209: F64 = unsafe { ftbl0mydspSIG0[iTemp207 as usize] }; - let mut fTemp210: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp207, 1)) as usize] } - fTemp209; - let mut fTemp211: F64 = 32767.5 * fTemp203; - let mut iTemp212: i32 = (fTemp211) as i32; - let mut iTemp213: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp212, 65535)))), 196607)); - let mut fTemp214: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp213, 3)) as usize] }; - let mut fTemp215: F64 = unsafe { ftbl0mydspSIG0[iTemp213 as usize] }; - let mut fTemp216: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp213, 1)) as usize] } - fTemp215; - let mut fTemp217: F64 = if iTemp62 != 0 {fTemp215 + fTemp76 * fTemp216 + (fTemp211 - (iTemp212) as F64) * (fTemp214 - (fTemp215 + fTemp76 * (fTemp216 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp213, 4)) as usize] } - fTemp214))))} else {1.0 - (fTemp209 + fTemp76 * fTemp210 + (fTemp205 - (iTemp206) as F64) * (fTemp208 - (fTemp209 + fTemp76 * (fTemp210 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp207, 4)) as usize] } - fTemp208)))))}; - let mut fTemp218: F64 = fTemp81 + fTemp204; - let mut fTemp219: F64 = 65535.0 * (1.0 - fTemp218); - let mut iTemp220: i32 = (fTemp219) as i32; - let mut iTemp221: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp220, 65535)))), 196607)); - let mut fTemp222: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp221, 3)) as usize] }; - let mut fTemp223: F64 = unsafe { ftbl0mydspSIG0[iTemp221 as usize] }; - let mut fTemp224: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp221, 1)) as usize] } - fTemp223; - let mut fTemp225: F64 = 65535.0 * fTemp218; - let mut iTemp226: i32 = (fTemp225) as i32; - let mut iTemp227: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp226, 65535)))), 196607)); - let mut fTemp228: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp227, 3), 196607))) as usize] }; - let mut fTemp229: F64 = unsafe { ftbl0mydspSIG0[iTemp227 as usize] }; - let mut fTemp230: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp227, 1), 196607))) as usize] } - fTemp229; - let mut iTemp231: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp229 + fTemp76 * fTemp230 + (fTemp225 - (iTemp226) as F64) * (fTemp228 - (fTemp229 + fTemp76 * (fTemp230 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp227, 4), 196607))) as usize] } - fTemp228))))} else {1.0 - (fTemp223 + fTemp76 * fTemp224 + (fTemp219 - (iTemp220) as F64) * (fTemp222 - (fTemp223 + fTemp76 * (fTemp224 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp221, 4)) as usize] } - fTemp222)))))} - fTemp217) / (1.0 - fTemp217))) as i32; - let mut fTemp232: F64 = if iTemp231 != 0 {fTemp201} else {fTemp204}; - let mut fTemp233: F64 = if iTemp231 != 0 {fTemp204} else {fTemp202}; - let mut fTemp234: F64 = fTemp233 + fTemp232; - let mut fTemp235: F64 = 0.5 * fTemp234; - let mut fTemp236: F64 = 65535.0 * (1.0 - fTemp235); - let mut iTemp237: i32 = (fTemp236) as i32; - let mut iTemp238: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp237, 65535)))), 196607)); - let mut fTemp239: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp238, 3)) as usize] }; - let mut fTemp240: F64 = unsafe { ftbl0mydspSIG0[iTemp238 as usize] }; - let mut fTemp241: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp238, 1)) as usize] } - fTemp240; - let mut fTemp242: F64 = 32767.5 * fTemp234; - let mut iTemp243: i32 = (fTemp242) as i32; - let mut iTemp244: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp243, 65535)))), 196607)); - let mut fTemp245: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp244, 3)) as usize] }; - let mut fTemp246: F64 = unsafe { ftbl0mydspSIG0[iTemp244 as usize] }; - let mut fTemp247: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp244, 1)) as usize] } - fTemp246; - let mut fTemp248: F64 = if iTemp62 != 0 {fTemp246 + fTemp76 * fTemp247 + (fTemp242 - (iTemp243) as F64) * (fTemp245 - (fTemp246 + fTemp76 * (fTemp247 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp244, 4)) as usize] } - fTemp245))))} else {1.0 - (fTemp240 + fTemp76 * fTemp241 + (fTemp236 - (iTemp237) as F64) * (fTemp239 - (fTemp240 + fTemp76 * (fTemp241 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp238, 4)) as usize] } - fTemp239)))))}; - let mut fTemp249: F64 = fTemp81 + fTemp235; - let mut fTemp250: F64 = 65535.0 * (1.0 - fTemp249); - let mut iTemp251: i32 = (fTemp250) as i32; - let mut iTemp252: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp251, 65535)))), 196607)); - let mut fTemp253: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp252, 3)) as usize] }; - let mut fTemp254: F64 = unsafe { ftbl0mydspSIG0[iTemp252 as usize] }; - let mut fTemp255: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp252, 1)) as usize] } - fTemp254; - let mut fTemp256: F64 = 65535.0 * fTemp249; - let mut iTemp257: i32 = (fTemp256) as i32; - let mut iTemp258: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp257, 65535)))), 196607)); - let mut fTemp259: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp258, 3), 196607))) as usize] }; - let mut fTemp260: F64 = unsafe { ftbl0mydspSIG0[iTemp258 as usize] }; - let mut fTemp261: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp258, 1), 196607))) as usize] } - fTemp260; - let mut iTemp262: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp260 + fTemp76 * fTemp261 + (fTemp256 - (iTemp257) as F64) * (fTemp259 - (fTemp260 + fTemp76 * (fTemp261 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp258, 4), 196607))) as usize] } - fTemp259))))} else {1.0 - (fTemp254 + fTemp76 * fTemp255 + (fTemp250 - (iTemp251) as F64) * (fTemp253 - (fTemp254 + fTemp76 * (fTemp255 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp252, 4)) as usize] } - fTemp253)))))} - fTemp248) / (1.0 - fTemp248))) as i32; - let mut fTemp263: F64 = if iTemp262 != 0 {fTemp232} else {fTemp235}; - let mut fTemp264: F64 = if iTemp262 != 0 {fTemp235} else {fTemp233}; - let mut fTemp265: F64 = fTemp264 + fTemp263; - let mut fTemp266: F64 = 0.5 * fTemp265; - let mut fTemp267: F64 = 65535.0 * (1.0 - fTemp266); - let mut iTemp268: i32 = (fTemp267) as i32; - let mut iTemp269: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp268, 65535)))), 196607)); - let mut fTemp270: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp269, 3)) as usize] }; - let mut fTemp271: F64 = unsafe { ftbl0mydspSIG0[iTemp269 as usize] }; - let mut fTemp272: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp269, 1)) as usize] } - fTemp271; - let mut fTemp273: F64 = 32767.5 * fTemp265; - let mut iTemp274: i32 = (fTemp273) as i32; - let mut iTemp275: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp274, 65535)))), 196607)); - let mut fTemp276: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp275, 3)) as usize] }; - let mut fTemp277: F64 = unsafe { ftbl0mydspSIG0[iTemp275 as usize] }; - let mut fTemp278: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp275, 1)) as usize] } - fTemp277; - let mut fTemp279: F64 = if iTemp62 != 0 {fTemp277 + fTemp76 * fTemp278 + (fTemp273 - (iTemp274) as F64) * (fTemp276 - (fTemp277 + fTemp76 * (fTemp278 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp275, 4)) as usize] } - fTemp276))))} else {1.0 - (fTemp271 + fTemp76 * fTemp272 + (fTemp267 - (iTemp268) as F64) * (fTemp270 - (fTemp271 + fTemp76 * (fTemp272 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp269, 4)) as usize] } - fTemp270)))))}; - let mut fTemp280: F64 = fTemp81 + fTemp266; - let mut fTemp281: F64 = 65535.0 * (1.0 - fTemp280); - let mut iTemp282: i32 = (fTemp281) as i32; - let mut iTemp283: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp282, 65535)))), 196607)); - let mut fTemp284: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp283, 3)) as usize] }; - let mut fTemp285: F64 = unsafe { ftbl0mydspSIG0[iTemp283 as usize] }; - let mut fTemp286: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp283, 1)) as usize] } - fTemp285; - let mut fTemp287: F64 = 65535.0 * fTemp280; - let mut iTemp288: i32 = (fTemp287) as i32; - let mut iTemp289: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp288, 65535)))), 196607)); - let mut fTemp290: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp289, 3), 196607))) as usize] }; - let mut fTemp291: F64 = unsafe { ftbl0mydspSIG0[iTemp289 as usize] }; - let mut fTemp292: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp289, 1), 196607))) as usize] } - fTemp291; - let mut iTemp293: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp291 + fTemp76 * fTemp292 + (fTemp287 - (iTemp288) as F64) * (fTemp290 - (fTemp291 + fTemp76 * (fTemp292 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp289, 4), 196607))) as usize] } - fTemp290))))} else {1.0 - (fTemp285 + fTemp76 * fTemp286 + (fTemp281 - (iTemp282) as F64) * (fTemp284 - (fTemp285 + fTemp76 * (fTemp286 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp283, 4)) as usize] } - fTemp284)))))} - fTemp279) / (1.0 - fTemp279))) as i32; - let mut fTemp294: F64 = if iTemp293 != 0 {fTemp263} else {fTemp266}; - let mut fTemp295: F64 = if iTemp293 != 0 {fTemp266} else {fTemp264}; - let mut fTemp296: F64 = fTemp295 + fTemp294; - let mut fTemp297: F64 = 0.5 * fTemp296; - let mut fTemp298: F64 = 65535.0 * (1.0 - fTemp297); - let mut iTemp299: i32 = (fTemp298) as i32; - let mut iTemp300: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp299, 65535)))), 196607)); - let mut fTemp301: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp300, 3)) as usize] }; - let mut fTemp302: F64 = unsafe { ftbl0mydspSIG0[iTemp300 as usize] }; - let mut fTemp303: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp300, 1)) as usize] } - fTemp302; - let mut fTemp304: F64 = 32767.5 * fTemp296; - let mut iTemp305: i32 = (fTemp304) as i32; - let mut iTemp306: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp305, 65535)))), 196607)); - let mut fTemp307: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp306, 3)) as usize] }; - let mut fTemp308: F64 = unsafe { ftbl0mydspSIG0[iTemp306 as usize] }; - let mut fTemp309: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp306, 1)) as usize] } - fTemp308; - let mut fTemp310: F64 = if iTemp62 != 0 {fTemp308 + fTemp76 * fTemp309 + (fTemp304 - (iTemp305) as F64) * (fTemp307 - (fTemp308 + fTemp76 * (fTemp309 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp306, 4)) as usize] } - fTemp307))))} else {1.0 - (fTemp302 + fTemp76 * fTemp303 + (fTemp298 - (iTemp299) as F64) * (fTemp301 - (fTemp302 + fTemp76 * (fTemp303 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp300, 4)) as usize] } - fTemp301)))))}; - let mut fTemp311: F64 = fTemp81 + fTemp297; - let mut fTemp312: F64 = 65535.0 * (1.0 - fTemp311); - let mut iTemp313: i32 = (fTemp312) as i32; - let mut iTemp314: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp313, 65535)))), 196607)); - let mut fTemp315: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp314, 3)) as usize] }; - let mut fTemp316: F64 = unsafe { ftbl0mydspSIG0[iTemp314 as usize] }; - let mut fTemp317: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp314, 1)) as usize] } - fTemp316; - let mut fTemp318: F64 = 65535.0 * fTemp311; - let mut iTemp319: i32 = (fTemp318) as i32; - let mut iTemp320: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp319, 65535)))), 196607)); - let mut fTemp321: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp320, 3), 196607))) as usize] }; - let mut fTemp322: F64 = unsafe { ftbl0mydspSIG0[iTemp320 as usize] }; - let mut fTemp323: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp320, 1), 196607))) as usize] } - fTemp322; - let mut iTemp324: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp322 + fTemp76 * fTemp323 + (fTemp318 - (iTemp319) as F64) * (fTemp321 - (fTemp322 + fTemp76 * (fTemp323 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp320, 4), 196607))) as usize] } - fTemp321))))} else {1.0 - (fTemp316 + fTemp76 * fTemp317 + (fTemp312 - (iTemp313) as F64) * (fTemp315 - (fTemp316 + fTemp76 * (fTemp317 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp314, 4)) as usize] } - fTemp315)))))} - fTemp310) / (1.0 - fTemp310))) as i32; - let mut fTemp325: F64 = if iTemp324 != 0 {fTemp294} else {fTemp297}; - let mut fTemp326: F64 = if iTemp324 != 0 {fTemp297} else {fTemp295}; - let mut fTemp327: F64 = fTemp326 + fTemp325; - let mut fTemp328: F64 = 0.5 * fTemp327; - let mut fTemp329: F64 = 65535.0 * (1.0 - fTemp328); - let mut iTemp330: i32 = (fTemp329) as i32; - let mut iTemp331: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp330, 65535)))), 196607)); - let mut fTemp332: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp331, 3)) as usize] }; - let mut fTemp333: F64 = unsafe { ftbl0mydspSIG0[iTemp331 as usize] }; - let mut fTemp334: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp331, 1)) as usize] } - fTemp333; - let mut fTemp335: F64 = 32767.5 * fTemp327; - let mut iTemp336: i32 = (fTemp335) as i32; - let mut iTemp337: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp336, 65535)))), 196607)); - let mut fTemp338: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp337, 3)) as usize] }; - let mut fTemp339: F64 = unsafe { ftbl0mydspSIG0[iTemp337 as usize] }; - let mut fTemp340: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp337, 1)) as usize] } - fTemp339; - let mut fTemp341: F64 = if iTemp62 != 0 {fTemp339 + fTemp76 * fTemp340 + (fTemp335 - (iTemp336) as F64) * (fTemp338 - (fTemp339 + fTemp76 * (fTemp340 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp337, 4)) as usize] } - fTemp338))))} else {1.0 - (fTemp333 + fTemp76 * fTemp334 + (fTemp329 - (iTemp330) as F64) * (fTemp332 - (fTemp333 + fTemp76 * (fTemp334 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp331, 4)) as usize] } - fTemp332)))))}; - let mut fTemp342: F64 = fTemp81 + fTemp328; - let mut fTemp343: F64 = 65535.0 * (1.0 - fTemp342); - let mut iTemp344: i32 = (fTemp343) as i32; - let mut iTemp345: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp344, 65535)))), 196607)); - let mut fTemp346: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp345, 3)) as usize] }; - let mut fTemp347: F64 = unsafe { ftbl0mydspSIG0[iTemp345 as usize] }; - let mut fTemp348: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp345, 1)) as usize] } - fTemp347; - let mut fTemp349: F64 = 65535.0 * fTemp342; - let mut iTemp350: i32 = (fTemp349) as i32; - let mut iTemp351: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp350, 65535)))), 196607)); - let mut fTemp352: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp351, 3), 196607))) as usize] }; - let mut fTemp353: F64 = unsafe { ftbl0mydspSIG0[iTemp351 as usize] }; - let mut fTemp354: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp351, 1), 196607))) as usize] } - fTemp353; - let mut iTemp355: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp353 + fTemp76 * fTemp354 + (fTemp349 - (iTemp350) as F64) * (fTemp352 - (fTemp353 + fTemp76 * (fTemp354 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp351, 4), 196607))) as usize] } - fTemp352))))} else {1.0 - (fTemp347 + fTemp76 * fTemp348 + (fTemp343 - (iTemp344) as F64) * (fTemp346 - (fTemp347 + fTemp76 * (fTemp348 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp345, 4)) as usize] } - fTemp346)))))} - fTemp341) / (1.0 - fTemp341))) as i32; - let mut fTemp356: F64 = if iTemp355 != 0 {fTemp325} else {fTemp328}; - let mut fTemp357: F64 = if iTemp355 != 0 {fTemp328} else {fTemp326}; - let mut fTemp358: F64 = fTemp357 + fTemp356; - let mut fTemp359: F64 = 0.5 * fTemp358; - let mut fTemp360: F64 = 65535.0 * (1.0 - fTemp359); - let mut iTemp361: i32 = (fTemp360) as i32; - let mut iTemp362: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp361, 65535)))), 196607)); - let mut fTemp363: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp362, 3)) as usize] }; - let mut fTemp364: F64 = unsafe { ftbl0mydspSIG0[iTemp362 as usize] }; - let mut fTemp365: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp362, 1)) as usize] } - fTemp364; - let mut fTemp366: F64 = 32767.5 * fTemp358; - let mut iTemp367: i32 = (fTemp366) as i32; - let mut iTemp368: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp367, 65535)))), 196607)); - let mut fTemp369: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp368, 3)) as usize] }; - let mut fTemp370: F64 = unsafe { ftbl0mydspSIG0[iTemp368 as usize] }; - let mut fTemp371: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp368, 1)) as usize] } - fTemp370; - let mut fTemp372: F64 = if iTemp62 != 0 {fTemp370 + fTemp76 * fTemp371 + (fTemp366 - (iTemp367) as F64) * (fTemp369 - (fTemp370 + fTemp76 * (fTemp371 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp368, 4)) as usize] } - fTemp369))))} else {1.0 - (fTemp364 + fTemp76 * fTemp365 + (fTemp360 - (iTemp361) as F64) * (fTemp363 - (fTemp364 + fTemp76 * (fTemp365 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp362, 4)) as usize] } - fTemp363)))))}; - let mut fTemp373: F64 = fTemp81 + fTemp359; - let mut fTemp374: F64 = 65535.0 * (1.0 - fTemp373); - let mut iTemp375: i32 = (fTemp374) as i32; - let mut iTemp376: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp375, 65535)))), 196607)); - let mut fTemp377: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp376, 3)) as usize] }; - let mut fTemp378: F64 = unsafe { ftbl0mydspSIG0[iTemp376 as usize] }; - let mut fTemp379: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp376, 1)) as usize] } - fTemp378; - let mut fTemp380: F64 = 65535.0 * fTemp373; - let mut iTemp381: i32 = (fTemp380) as i32; - let mut iTemp382: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp381, 65535)))), 196607)); - let mut fTemp383: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp382, 3), 196607))) as usize] }; - let mut fTemp384: F64 = unsafe { ftbl0mydspSIG0[iTemp382 as usize] }; - let mut fTemp385: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp382, 1), 196607))) as usize] } - fTemp384; - let mut iTemp386: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp384 + fTemp76 * fTemp385 + (fTemp380 - (iTemp381) as F64) * (fTemp383 - (fTemp384 + fTemp76 * (fTemp385 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp382, 4), 196607))) as usize] } - fTemp383))))} else {1.0 - (fTemp378 + fTemp76 * fTemp379 + (fTemp374 - (iTemp375) as F64) * (fTemp377 - (fTemp378 + fTemp76 * (fTemp379 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp376, 4)) as usize] } - fTemp377)))))} - fTemp372) / (1.0 - fTemp372))) as i32; - let mut fTemp387: F64 = if iTemp386 != 0 {fTemp356} else {fTemp359}; - let mut fTemp388: F64 = if iTemp386 != 0 {fTemp359} else {fTemp357}; - let mut fTemp389: F64 = fTemp388 + fTemp387; - let mut fTemp390: F64 = 0.5 * fTemp389; - let mut fTemp391: F64 = 65535.0 * (1.0 - fTemp390); - let mut iTemp392: i32 = (fTemp391) as i32; - let mut iTemp393: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp392, 65535)))), 196607)); - let mut fTemp394: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp393, 3)) as usize] }; - let mut fTemp395: F64 = unsafe { ftbl0mydspSIG0[iTemp393 as usize] }; - let mut fTemp396: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp393, 1)) as usize] } - fTemp395; - let mut fTemp397: F64 = 32767.5 * fTemp389; - let mut iTemp398: i32 = (fTemp397) as i32; - let mut iTemp399: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp398, 65535)))), 196607)); - let mut fTemp400: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp399, 3)) as usize] }; - let mut fTemp401: F64 = unsafe { ftbl0mydspSIG0[iTemp399 as usize] }; - let mut fTemp402: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp399, 1)) as usize] } - fTemp401; - let mut fTemp403: F64 = if iTemp62 != 0 {fTemp401 + fTemp76 * fTemp402 + (fTemp397 - (iTemp398) as F64) * (fTemp400 - (fTemp401 + fTemp76 * (fTemp402 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp399, 4)) as usize] } - fTemp400))))} else {1.0 - (fTemp395 + fTemp76 * fTemp396 + (fTemp391 - (iTemp392) as F64) * (fTemp394 - (fTemp395 + fTemp76 * (fTemp396 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp393, 4)) as usize] } - fTemp394)))))}; - let mut fTemp404: F64 = fTemp81 + fTemp390; - let mut fTemp405: F64 = 65535.0 * (1.0 - fTemp404); - let mut iTemp406: i32 = (fTemp405) as i32; - let mut iTemp407: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp406, 65535)))), 196607)); - let mut fTemp408: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp407, 3)) as usize] }; - let mut fTemp409: F64 = unsafe { ftbl0mydspSIG0[iTemp407 as usize] }; - let mut fTemp410: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp407, 1)) as usize] } - fTemp409; - let mut fTemp411: F64 = 65535.0 * fTemp404; - let mut iTemp412: i32 = (fTemp411) as i32; - let mut iTemp413: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp412, 65535)))), 196607)); - let mut fTemp414: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp413, 3), 196607))) as usize] }; - let mut fTemp415: F64 = unsafe { ftbl0mydspSIG0[iTemp413 as usize] }; - let mut fTemp416: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp413, 1), 196607))) as usize] } - fTemp415; - let mut iTemp417: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp415 + fTemp76 * fTemp416 + (fTemp411 - (iTemp412) as F64) * (fTemp414 - (fTemp415 + fTemp76 * (fTemp416 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp413, 4), 196607))) as usize] } - fTemp414))))} else {1.0 - (fTemp409 + fTemp76 * fTemp410 + (fTemp405 - (iTemp406) as F64) * (fTemp408 - (fTemp409 + fTemp76 * (fTemp410 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp407, 4)) as usize] } - fTemp408)))))} - fTemp403) / (1.0 - fTemp403))) as i32; - let mut fTemp418: F64 = if iTemp417 != 0 {fTemp387} else {fTemp390}; - let mut fTemp419: F64 = if iTemp417 != 0 {fTemp390} else {fTemp388}; - let mut fTemp420: F64 = fTemp419 + fTemp418; - let mut fTemp421: F64 = 0.5 * fTemp420; - let mut fTemp422: F64 = 65535.0 * (1.0 - fTemp421); - let mut iTemp423: i32 = (fTemp422) as i32; - let mut iTemp424: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp423, 65535)))), 196607)); - let mut fTemp425: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp424, 3)) as usize] }; - let mut fTemp426: F64 = unsafe { ftbl0mydspSIG0[iTemp424 as usize] }; - let mut fTemp427: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp424, 1)) as usize] } - fTemp426; - let mut fTemp428: F64 = 32767.5 * fTemp420; - let mut iTemp429: i32 = (fTemp428) as i32; - let mut iTemp430: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp429, 65535)))), 196607)); - let mut fTemp431: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp430, 3)) as usize] }; - let mut fTemp432: F64 = unsafe { ftbl0mydspSIG0[iTemp430 as usize] }; - let mut fTemp433: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp430, 1)) as usize] } - fTemp432; - let mut fTemp434: F64 = if iTemp62 != 0 {fTemp432 + fTemp76 * fTemp433 + (fTemp428 - (iTemp429) as F64) * (fTemp431 - (fTemp432 + fTemp76 * (fTemp433 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp430, 4)) as usize] } - fTemp431))))} else {1.0 - (fTemp426 + fTemp76 * fTemp427 + (fTemp422 - (iTemp423) as F64) * (fTemp425 - (fTemp426 + fTemp76 * (fTemp427 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp424, 4)) as usize] } - fTemp425)))))}; - let mut fTemp435: F64 = fTemp81 + fTemp421; - let mut fTemp436: F64 = 65535.0 * (1.0 - fTemp435); - let mut iTemp437: i32 = (fTemp436) as i32; - let mut iTemp438: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp437, 65535)))), 196607)); - let mut fTemp439: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp438, 3)) as usize] }; - let mut fTemp440: F64 = unsafe { ftbl0mydspSIG0[iTemp438 as usize] }; - let mut fTemp441: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp438, 1)) as usize] } - fTemp440; - let mut fTemp442: F64 = 65535.0 * fTemp435; - let mut iTemp443: i32 = (fTemp442) as i32; - let mut iTemp444: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp443, 65535)))), 196607)); - let mut fTemp445: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp444, 3), 196607))) as usize] }; - let mut fTemp446: F64 = unsafe { ftbl0mydspSIG0[iTemp444 as usize] }; - let mut fTemp447: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp444, 1), 196607))) as usize] } - fTemp446; - let mut iTemp448: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp446 + fTemp76 * fTemp447 + (fTemp442 - (iTemp443) as F64) * (fTemp445 - (fTemp446 + fTemp76 * (fTemp447 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp444, 4), 196607))) as usize] } - fTemp445))))} else {1.0 - (fTemp440 + fTemp76 * fTemp441 + (fTemp436 - (iTemp437) as F64) * (fTemp439 - (fTemp440 + fTemp76 * (fTemp441 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp438, 4)) as usize] } - fTemp439)))))} - fTemp434) / (1.0 - fTemp434))) as i32; - let mut fTemp449: F64 = if iTemp448 != 0 {fTemp418} else {fTemp421}; - let mut fTemp450: F64 = if iTemp448 != 0 {fTemp421} else {fTemp419}; - let mut fTemp451: F64 = fTemp450 + fTemp449; - let mut fTemp452: F64 = 0.5 * fTemp451; - let mut fTemp453: F64 = 65535.0 * (1.0 - fTemp452); - let mut iTemp454: i32 = (fTemp453) as i32; - let mut iTemp455: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp454, 65535)))), 196607)); - let mut fTemp456: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp455, 3)) as usize] }; - let mut fTemp457: F64 = unsafe { ftbl0mydspSIG0[iTemp455 as usize] }; - let mut fTemp458: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp455, 1)) as usize] } - fTemp457; - let mut fTemp459: F64 = 32767.5 * fTemp451; - let mut iTemp460: i32 = (fTemp459) as i32; - let mut iTemp461: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp460, 65535)))), 196607)); - let mut fTemp462: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp461, 3)) as usize] }; - let mut fTemp463: F64 = unsafe { ftbl0mydspSIG0[iTemp461 as usize] }; - let mut fTemp464: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp461, 1)) as usize] } - fTemp463; - let mut fTemp465: F64 = if iTemp62 != 0 {fTemp463 + fTemp76 * fTemp464 + (fTemp459 - (iTemp460) as F64) * (fTemp462 - (fTemp463 + fTemp76 * (fTemp464 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp461, 4)) as usize] } - fTemp462))))} else {1.0 - (fTemp457 + fTemp76 * fTemp458 + (fTemp453 - (iTemp454) as F64) * (fTemp456 - (fTemp457 + fTemp76 * (fTemp458 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp455, 4)) as usize] } - fTemp456)))))}; - let mut fTemp466: F64 = fTemp81 + fTemp452; - let mut fTemp467: F64 = 65535.0 * (1.0 - fTemp466); - let mut iTemp468: i32 = (fTemp467) as i32; - let mut iTemp469: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp468, 65535)))), 196607)); - let mut fTemp470: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp469, 3)) as usize] }; - let mut fTemp471: F64 = unsafe { ftbl0mydspSIG0[iTemp469 as usize] }; - let mut fTemp472: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp469, 1)) as usize] } - fTemp471; - let mut fTemp473: F64 = 65535.0 * fTemp466; - let mut iTemp474: i32 = (fTemp473) as i32; - let mut iTemp475: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp474, 65535)))), 196607)); - let mut fTemp476: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp475, 3), 196607))) as usize] }; - let mut fTemp477: F64 = unsafe { ftbl0mydspSIG0[iTemp475 as usize] }; - let mut fTemp478: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp475, 1), 196607))) as usize] } - fTemp477; - let mut iTemp479: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp477 + fTemp76 * fTemp478 + (fTemp473 - (iTemp474) as F64) * (fTemp476 - (fTemp477 + fTemp76 * (fTemp478 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp475, 4), 196607))) as usize] } - fTemp476))))} else {1.0 - (fTemp471 + fTemp76 * fTemp472 + (fTemp467 - (iTemp468) as F64) * (fTemp470 - (fTemp471 + fTemp76 * (fTemp472 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp469, 4)) as usize] } - fTemp470)))))} - fTemp465) / (1.0 - fTemp465))) as i32; - let mut fTemp480: F64 = if iTemp479 != 0 {fTemp449} else {fTemp452}; - let mut fTemp481: F64 = if iTemp479 != 0 {fTemp452} else {fTemp450}; - let mut fTemp482: F64 = fTemp481 + fTemp480; - let mut fTemp483: F64 = 0.5 * fTemp482; - let mut fTemp484: F64 = 65535.0 * (1.0 - fTemp483); - let mut iTemp485: i32 = (fTemp484) as i32; - let mut iTemp486: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp485, 65535)))), 196607)); - let mut fTemp487: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp486, 3)) as usize] }; - let mut fTemp488: F64 = unsafe { ftbl0mydspSIG0[iTemp486 as usize] }; - let mut fTemp489: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp486, 1)) as usize] } - fTemp488; - let mut fTemp490: F64 = 32767.5 * fTemp482; - let mut iTemp491: i32 = (fTemp490) as i32; - let mut iTemp492: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp491, 65535)))), 196607)); - let mut fTemp493: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp492, 3)) as usize] }; - let mut fTemp494: F64 = unsafe { ftbl0mydspSIG0[iTemp492 as usize] }; - let mut fTemp495: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp492, 1)) as usize] } - fTemp494; - let mut fTemp496: F64 = if iTemp62 != 0 {fTemp494 + fTemp76 * fTemp495 + (fTemp490 - (iTemp491) as F64) * (fTemp493 - (fTemp494 + fTemp76 * (fTemp495 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp492, 4)) as usize] } - fTemp493))))} else {1.0 - (fTemp488 + fTemp76 * fTemp489 + (fTemp484 - (iTemp485) as F64) * (fTemp487 - (fTemp488 + fTemp76 * (fTemp489 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp486, 4)) as usize] } - fTemp487)))))}; - let mut fTemp497: F64 = fTemp81 + fTemp483; - let mut fTemp498: F64 = 65535.0 * (1.0 - fTemp497); - let mut iTemp499: i32 = (fTemp498) as i32; - let mut iTemp500: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp499, 65535)))), 196607)); - let mut fTemp501: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp500, 3)) as usize] }; - let mut fTemp502: F64 = unsafe { ftbl0mydspSIG0[iTemp500 as usize] }; - let mut fTemp503: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp500, 1)) as usize] } - fTemp502; - let mut fTemp504: F64 = 65535.0 * fTemp497; - let mut iTemp505: i32 = (fTemp504) as i32; - let mut iTemp506: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp505, 65535)))), 196607)); - let mut fTemp507: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp506, 3), 196607))) as usize] }; - let mut fTemp508: F64 = unsafe { ftbl0mydspSIG0[iTemp506 as usize] }; - let mut fTemp509: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp506, 1), 196607))) as usize] } - fTemp508; - let mut iTemp510: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp508 + fTemp76 * fTemp509 + (fTemp504 - (iTemp505) as F64) * (fTemp507 - (fTemp508 + fTemp76 * (fTemp509 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp506, 4), 196607))) as usize] } - fTemp507))))} else {1.0 - (fTemp502 + fTemp76 * fTemp503 + (fTemp498 - (iTemp499) as F64) * (fTemp501 - (fTemp502 + fTemp76 * (fTemp503 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp500, 4)) as usize] } - fTemp501)))))} - fTemp496) / (1.0 - fTemp496))) as i32; - let mut fTemp511: F64 = if iTemp510 != 0 {fTemp480} else {fTemp483}; - let mut fTemp512: F64 = if iTemp510 != 0 {fTemp483} else {fTemp481}; - let mut fTemp513: F64 = fTemp512 + fTemp511; - let mut fTemp514: F64 = 0.5 * fTemp513; - let mut fTemp515: F64 = 65535.0 * (1.0 - fTemp514); - let mut iTemp516: i32 = (fTemp515) as i32; - let mut iTemp517: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp516, 65535)))), 196607)); - let mut fTemp518: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp517, 3)) as usize] }; - let mut fTemp519: F64 = unsafe { ftbl0mydspSIG0[iTemp517 as usize] }; - let mut fTemp520: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp517, 1)) as usize] } - fTemp519; - let mut fTemp521: F64 = 32767.5 * fTemp513; - let mut iTemp522: i32 = (fTemp521) as i32; - let mut iTemp523: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp522, 65535)))), 196607)); - let mut fTemp524: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp523, 3)) as usize] }; - let mut fTemp525: F64 = unsafe { ftbl0mydspSIG0[iTemp523 as usize] }; - let mut fTemp526: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp523, 1)) as usize] } - fTemp525; - let mut fTemp527: F64 = if iTemp62 != 0 {fTemp525 + fTemp76 * fTemp526 + (fTemp521 - (iTemp522) as F64) * (fTemp524 - (fTemp525 + fTemp76 * (fTemp526 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp523, 4)) as usize] } - fTemp524))))} else {1.0 - (fTemp519 + fTemp76 * fTemp520 + (fTemp515 - (iTemp516) as F64) * (fTemp518 - (fTemp519 + fTemp76 * (fTemp520 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp517, 4)) as usize] } - fTemp518)))))}; - let mut fTemp528: F64 = fTemp81 + fTemp514; - let mut fTemp529: F64 = 65535.0 * (1.0 - fTemp528); - let mut iTemp530: i32 = (fTemp529) as i32; - let mut iTemp531: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp530, 65535)))), 196607)); - let mut fTemp532: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp531, 3)) as usize] }; - let mut fTemp533: F64 = unsafe { ftbl0mydspSIG0[iTemp531 as usize] }; - let mut fTemp534: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp531, 1)) as usize] } - fTemp533; - let mut fTemp535: F64 = 65535.0 * fTemp528; - let mut iTemp536: i32 = (fTemp535) as i32; - let mut iTemp537: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp536, 65535)))), 196607)); - let mut fTemp538: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp537, 3), 196607))) as usize] }; - let mut fTemp539: F64 = unsafe { ftbl0mydspSIG0[iTemp537 as usize] }; - let mut fTemp540: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp537, 1), 196607))) as usize] } - fTemp539; - let mut iTemp541: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp539 + fTemp76 * fTemp540 + (fTemp535 - (iTemp536) as F64) * (fTemp538 - (fTemp539 + fTemp76 * (fTemp540 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp537, 4), 196607))) as usize] } - fTemp538))))} else {1.0 - (fTemp533 + fTemp76 * fTemp534 + (fTemp529 - (iTemp530) as F64) * (fTemp532 - (fTemp533 + fTemp76 * (fTemp534 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp531, 4)) as usize] } - fTemp532)))))} - fTemp527) / (1.0 - fTemp527))) as i32; - let mut fTemp542: F64 = if iTemp541 != 0 {fTemp511} else {fTemp514}; - let mut fTemp543: F64 = if iTemp541 != 0 {fTemp514} else {fTemp512}; - let mut fTemp544: F64 = fTemp543 + fTemp542; - let mut fTemp545: F64 = 0.5 * fTemp544; - let mut fTemp546: F64 = 65535.0 * (1.0 - fTemp545); - let mut iTemp547: i32 = (fTemp546) as i32; - let mut iTemp548: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp547, 65535)))), 196607)); - let mut fTemp549: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp548, 3)) as usize] }; - let mut fTemp550: F64 = unsafe { ftbl0mydspSIG0[iTemp548 as usize] }; - let mut fTemp551: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp548, 1)) as usize] } - fTemp550; - let mut fTemp552: F64 = 32767.5 * fTemp544; - let mut iTemp553: i32 = (fTemp552) as i32; - let mut iTemp554: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp553, 65535)))), 196607)); - let mut fTemp555: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp554, 3)) as usize] }; - let mut fTemp556: F64 = unsafe { ftbl0mydspSIG0[iTemp554 as usize] }; - let mut fTemp557: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp554, 1)) as usize] } - fTemp556; - let mut fTemp558: F64 = if iTemp62 != 0 {fTemp556 + fTemp76 * fTemp557 + (fTemp552 - (iTemp553) as F64) * (fTemp555 - (fTemp556 + fTemp76 * (fTemp557 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp554, 4)) as usize] } - fTemp555))))} else {1.0 - (fTemp550 + fTemp76 * fTemp551 + (fTemp546 - (iTemp547) as F64) * (fTemp549 - (fTemp550 + fTemp76 * (fTemp551 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp548, 4)) as usize] } - fTemp549)))))}; - let mut fTemp559: F64 = fTemp81 + fTemp545; - let mut fTemp560: F64 = 65535.0 * (1.0 - fTemp559); - let mut iTemp561: i32 = (fTemp560) as i32; - let mut iTemp562: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp561, 65535)))), 196607)); - let mut fTemp563: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp562, 3)) as usize] }; - let mut fTemp564: F64 = unsafe { ftbl0mydspSIG0[iTemp562 as usize] }; - let mut fTemp565: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp562, 1)) as usize] } - fTemp564; - let mut fTemp566: F64 = 65535.0 * fTemp559; - let mut iTemp567: i32 = (fTemp566) as i32; - let mut iTemp568: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp567, 65535)))), 196607)); - let mut fTemp569: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp568, 3), 196607))) as usize] }; - let mut fTemp570: F64 = unsafe { ftbl0mydspSIG0[iTemp568 as usize] }; - let mut fTemp571: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp568, 1), 196607))) as usize] } - fTemp570; - let mut iTemp572: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp570 + fTemp76 * fTemp571 + (fTemp566 - (iTemp567) as F64) * (fTemp569 - (fTemp570 + fTemp76 * (fTemp571 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp568, 4), 196607))) as usize] } - fTemp569))))} else {1.0 - (fTemp564 + fTemp76 * fTemp565 + (fTemp560 - (iTemp561) as F64) * (fTemp563 - (fTemp564 + fTemp76 * (fTemp565 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp562, 4)) as usize] } - fTemp563)))))} - fTemp558) / (1.0 - fTemp558))) as i32; - let mut fTemp573: F64 = if iTemp572 != 0 {fTemp542} else {fTemp545}; - let mut fTemp574: F64 = if iTemp572 != 0 {fTemp545} else {fTemp543}; - let mut fTemp575: F64 = fTemp574 + fTemp573; - let mut fTemp576: F64 = 0.5 * fTemp575; - let mut fTemp577: F64 = 65535.0 * (1.0 - fTemp576); - let mut iTemp578: i32 = (fTemp577) as i32; - let mut iTemp579: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp578, 65535)))), 196607)); - let mut fTemp580: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp579, 3)) as usize] }; - let mut fTemp581: F64 = unsafe { ftbl0mydspSIG0[iTemp579 as usize] }; - let mut fTemp582: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp579, 1)) as usize] } - fTemp581; - let mut fTemp583: F64 = 32767.5 * fTemp575; - let mut iTemp584: i32 = (fTemp583) as i32; - let mut iTemp585: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp584, 65535)))), 196607)); - let mut fTemp586: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp585, 3)) as usize] }; - let mut fTemp587: F64 = unsafe { ftbl0mydspSIG0[iTemp585 as usize] }; - let mut fTemp588: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp585, 1)) as usize] } - fTemp587; - let mut fTemp589: F64 = if iTemp62 != 0 {fTemp587 + fTemp76 * fTemp588 + (fTemp583 - (iTemp584) as F64) * (fTemp586 - (fTemp587 + fTemp76 * (fTemp588 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp585, 4), 196607))) as usize] } - fTemp586))))} else {1.0 - (fTemp581 + fTemp76 * fTemp582 + (fTemp577 - (iTemp578) as F64) * (fTemp580 - (fTemp581 + fTemp76 * (fTemp582 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp579, 4), 196607))) as usize] } - fTemp580)))))}; - let mut fTemp590: F64 = fTemp81 + fTemp576; - let mut fTemp591: F64 = 65535.0 * (1.0 - fTemp590); - let mut iTemp592: i32 = (fTemp591) as i32; - let mut iTemp593: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp592, 65535)))), 196607)); - let mut fTemp594: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp593, 3)) as usize] }; - let mut fTemp595: F64 = unsafe { ftbl0mydspSIG0[iTemp593 as usize] }; - let mut fTemp596: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp593, 1)) as usize] } - fTemp595; - let mut fTemp597: F64 = 65535.0 * fTemp590; - let mut iTemp598: i32 = (fTemp597) as i32; - let mut iTemp599: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp598, 65535)))), 196607)); - let mut fTemp600: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp599, 3), 196607))) as usize] }; - let mut fTemp601: F64 = unsafe { ftbl0mydspSIG0[iTemp599 as usize] }; - let mut fTemp602: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp599, 1), 196607))) as usize] } - fTemp601; - let mut iTemp603: i32 = (fTemp137 > ((if iTemp62 != 0 {fTemp601 + fTemp76 * fTemp602 + (fTemp597 - (iTemp598) as F64) * (fTemp600 - (fTemp601 + fTemp76 * (fTemp602 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp599, 4), 196607))) as usize] } - fTemp600))))} else {1.0 - (fTemp595 + fTemp76 * fTemp596 + (fTemp591 - (iTemp592) as F64) * (fTemp594 - (fTemp595 + fTemp76 * (fTemp596 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp593, 4)) as usize] } - fTemp594)))))} - fTemp589) / (1.0 - fTemp589))) as i32; - let mut fTemp604: F64 = F64::min(1.0, F64::max(0.0, 0.5 * (if iTemp603 != 0 {fTemp576} else {fTemp574} + if iTemp603 != 0 {fTemp573} else {fTemp576}))); - self.fRec1[0] = fTemp604; - let mut fTemp605: F64 = 65535.0 * (1.0 - fTemp604); - let mut iTemp606: i32 = (fTemp605) as i32; - let mut iTemp607: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp606, 65535)))), 196607)); - let mut fTemp608: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp607, 3)) as usize] }; - let mut fTemp609: F64 = unsafe { ftbl0mydspSIG0[iTemp607 as usize] }; - let mut fTemp610: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp607, 1)) as usize] } - fTemp609; - let mut fTemp611: F64 = 65535.0 * fTemp604; - let mut iTemp612: i32 = (fTemp611) as i32; - let mut iTemp613: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp612, 65535)))), 196607)); - let mut fTemp614: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp613, 3)) as usize] }; - let mut fTemp615: F64 = unsafe { ftbl0mydspSIG0[iTemp613 as usize] }; - let mut fTemp616: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp613, 1)) as usize] } - fTemp615; - let mut fTemp617: F64 = if iTemp62 != 0 {fTemp615 + fTemp76 * fTemp616 + (fTemp611 - (iTemp612) as F64) * (fTemp614 - (fTemp615 + fTemp76 * (fTemp616 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp613, 4), 196607))) as usize] } - fTemp614))))} else {1.0 - (fTemp609 + fTemp76 * fTemp610 + (fTemp605 - (iTemp606) as F64) * (fTemp608 - (fTemp609 + fTemp76 * (fTemp610 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp607, 4), 196607))) as usize] } - fTemp608)))))}; - let mut fTemp618: F64 = fTemp81 + fTemp604; - let mut fTemp619: F64 = 65535.0 * (1.0 - fTemp618); - let mut iTemp620: i32 = (fTemp619) as i32; - let mut iTemp621: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp620, 65535)))), 196607)); - let mut fTemp622: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp621, 3)) as usize] }; - let mut fTemp623: F64 = unsafe { ftbl0mydspSIG0[iTemp621 as usize] }; - let mut fTemp624: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp621, 1)) as usize] } - fTemp623; - let mut fTemp625: F64 = 65535.0 * fTemp618; - let mut iTemp626: i32 = (fTemp625) as i32; - let mut iTemp627: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp71, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp626, 65535)))), 196607)); - let mut fTemp628: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp627, 3), 196607))) as usize] }; - let mut fTemp629: F64 = unsafe { ftbl0mydspSIG0[iTemp627 as usize] }; - let mut fTemp630: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp627, 1), 196607))) as usize] } - fTemp629; - let mut fTemp631: F64 = fTemp4 + if ((0.001 * fTemp80) == 0.0) as i32 != 0 {fTemp61} else {fTemp61 * (if iTemp62 != 0 {fTemp629 + fTemp76 * fTemp630 + (fTemp625 - (iTemp626) as F64) * (fTemp628 - (fTemp629 + fTemp76 * (fTemp630 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp627, 4), 196607))) as usize] } - fTemp628))))} else {1.0 - (fTemp623 + fTemp76 * fTemp624 + (fTemp619 - (iTemp620) as F64) * (fTemp622 - (fTemp623 + fTemp76 * (fTemp624 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp621, 4)) as usize] } - fTemp622)))))} - fTemp617) / (1.0 - fTemp617)}; - self.fRec2[(self.IOTA0 & 8191) as usize] = if iTemp79 != 0 {F64::min(fTemp631, fTemp4)} else {F64::max(fTemp631, fTemp4)}; - let mut fTemp632: F64 = self.fRec2[((i32::wrapping_sub(self.IOTA0, iSlow70)) & 8191) as usize]; - self.fHbargraph0 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp632)); + let mut fTemp33: F64 = self.fRec5[0] - self.fRec6[0]; + let mut fTemp34: F64 = F64::powf(1e+01, fSlow16 * F64::min(0.25, self.fRec4[0]) * (self.fRec6[0] + fTemp33 * (F64::max(fTemp11, F64::min(fTemp12, fTemp33)) + fTemp10) / fTemp9)); + let mut fTemp35: F64 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp15)); + let mut fTemp36: F64 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp18)); + let mut fTemp37: F64 = F64::max(fTemp35, fTemp36); + let mut fTemp38: F64 = fTemp35 + fSlow17 * (fTemp37 - fTemp35); + let mut iTemp39: i32 = ((fTemp38 > fSlow11) as i32) + ((fTemp38 > fSlow9) as i32); + let mut fTemp40: F64 = fTemp38 - fSlow8; + let mut fTemp41: F64 = F64::min(fTemp34, F64::powf(1e+01, -(fSlow18 * F64::max(0.0, if (iTemp39 == 0) as i32 != 0 {0.0} else {if (iTemp39 == 1) as i32 != 0 {fSlow12 * mydsp_faustpower2_f(fSlow7 + fTemp40)} else {fTemp40}})))); + self.fVec4[(self.IOTA0 & 16383) as usize] = fTemp41; + let mut fTemp42: F64 = F64::min(fTemp41, self.fVec4[((i32::wrapping_sub(self.IOTA0, 1)) & 16383) as usize]); + self.fVec5[0] = fTemp42; + let mut fTemp43: F64 = F64::min(fTemp42, self.fVec5[2]); + self.fVec6[0] = fTemp43; + let mut fTemp44: F64 = F64::min(fTemp43, self.fVec6[4]); + self.fVec7[0] = fTemp44; + let mut fTemp45: F64 = F64::min(fTemp44, self.fVec7[8]); + self.fVec8[(self.IOTA0 & 31) as usize] = fTemp45; + let mut fTemp46: F64 = F64::min(fTemp45, self.fVec8[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); + self.fVec9[(self.IOTA0 & 63) as usize] = fTemp46; + let mut fTemp47: F64 = F64::min(fTemp46, self.fVec9[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); + self.fVec10[(self.IOTA0 & 127) as usize] = fTemp47; + let mut fTemp48: F64 = F64::min(fTemp47, self.fVec10[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); + self.fVec11[(self.IOTA0 & 255) as usize] = fTemp48; + let mut fTemp49: F64 = F64::min(fTemp48, self.fVec11[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); + self.fVec12[(self.IOTA0 & 511) as usize] = fTemp49; + let mut fTemp50: F64 = F64::min(fTemp49, self.fVec12[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); + self.fVec13[(self.IOTA0 & 1023) as usize] = fTemp50; + let mut fTemp51: F64 = F64::min(fTemp50, self.fVec13[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); + self.fVec14[(self.IOTA0 & 2047) as usize] = fTemp51; + self.fVec15[(self.IOTA0 & 4095) as usize] = F64::min(fTemp51, self.fVec14[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); + self.fRec3[0] = F64::max(F64::min(self.fRec3[1], self.fVec4[((i32::wrapping_sub(self.IOTA0, iSlow21)) & 16383) as usize]), F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow23 != 0 {fTemp41} else {1.7976931348623157e+308}, if iSlow24 != 0 {self.fVec5[iSlow23 as usize]} else {1.7976931348623157e+308}), if iSlow25 != 0 {self.fVec6[iSlow26 as usize]} else {1.7976931348623157e+308}), if iSlow27 != 0 {self.fVec7[iSlow28 as usize]} else {1.7976931348623157e+308}), if iSlow29 != 0 {self.fVec8[((i32::wrapping_sub(self.IOTA0, iSlow30)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow31 != 0 {self.fVec9[((i32::wrapping_sub(self.IOTA0, iSlow32)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow33 != 0 {self.fVec10[((i32::wrapping_sub(self.IOTA0, iSlow34)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow35 != 0 {self.fVec11[((i32::wrapping_sub(self.IOTA0, iSlow36)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow37 != 0 {self.fVec12[((i32::wrapping_sub(self.IOTA0, iSlow38)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow39 != 0 {self.fVec13[((i32::wrapping_sub(self.IOTA0, iSlow40)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow41 != 0 {self.fVec14[((i32::wrapping_sub(self.IOTA0, iSlow42)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow43 != 0 {self.fVec15[((i32::wrapping_sub(self.IOTA0, iSlow44)) & 4095) as usize]} else {1.7976931348623157e+308})); + let mut fTemp52: F64 = F64::min(self.fRec3[0], self.fRec3[1]); + self.fVec16[0] = fTemp52; + let mut fTemp53: F64 = F64::min(fTemp52, self.fVec16[2]); + self.fVec17[0] = fTemp53; + let mut fTemp54: F64 = F64::min(fTemp53, self.fVec17[4]); + self.fVec18[0] = fTemp54; + let mut fTemp55: F64 = F64::min(fTemp54, self.fVec18[8]); + self.fVec19[(self.IOTA0 & 31) as usize] = fTemp55; + let mut fTemp56: F64 = F64::min(fTemp55, self.fVec19[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); + self.fVec20[(self.IOTA0 & 63) as usize] = fTemp56; + let mut fTemp57: F64 = F64::min(fTemp56, self.fVec20[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); + self.fVec21[(self.IOTA0 & 127) as usize] = fTemp57; + let mut fTemp58: F64 = F64::min(fTemp57, self.fVec21[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); + self.fVec22[(self.IOTA0 & 255) as usize] = fTemp58; + let mut fTemp59: F64 = F64::min(fTemp58, self.fVec22[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); + self.fVec23[(self.IOTA0 & 511) as usize] = fTemp59; + let mut fTemp60: F64 = F64::min(fTemp59, self.fVec23[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); + self.fVec24[(self.IOTA0 & 1023) as usize] = fTemp60; + let mut fTemp61: F64 = F64::min(fTemp60, self.fVec24[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); + self.fVec25[(self.IOTA0 & 2047) as usize] = fTemp61; + self.fVec26[(self.IOTA0 & 4095) as usize] = F64::min(fTemp61, self.fVec25[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); + let mut fTemp62: F64 = F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow4 != 0 {self.fRec3[0]} else {1.7976931348623157e+308}, if iSlow45 != 0 {self.fVec16[iSlow4 as usize]} else {1.7976931348623157e+308}), if iSlow46 != 0 {self.fVec17[iSlow47 as usize]} else {1.7976931348623157e+308}), if iSlow48 != 0 {self.fVec18[iSlow49 as usize]} else {1.7976931348623157e+308}), if iSlow50 != 0 {self.fVec19[((i32::wrapping_sub(self.IOTA0, iSlow51)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow52 != 0 {self.fVec20[((i32::wrapping_sub(self.IOTA0, iSlow53)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow54 != 0 {self.fVec21[((i32::wrapping_sub(self.IOTA0, iSlow55)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow56 != 0 {self.fVec22[((i32::wrapping_sub(self.IOTA0, iSlow57)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow58 != 0 {self.fVec23[((i32::wrapping_sub(self.IOTA0, iSlow59)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow60 != 0 {self.fVec24[((i32::wrapping_sub(self.IOTA0, iSlow61)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow62 != 0 {self.fVec25[((i32::wrapping_sub(self.IOTA0, iSlow63)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow64 != 0 {self.fVec26[((i32::wrapping_sub(self.IOTA0, iSlow65)) & 4095) as usize]} else {1.7976931348623157e+308}) - fTemp5; + self.fVec27[0] = fTemp62; + let mut iTemp63: i32 = (fTemp62 > 0.0) as i32; + let mut fTemp69: F64 = if iTemp63 != 0 {fSlow67} else {fSlow66}; + self.fVec28[0] = fTemp69; + let mut fTemp70: F64 = 2.0 * fTemp69; + let mut iTemp71: i32 = (fTemp70) as i32; + let mut iTemp72: i32 = std::cmp::max(0, std::cmp::min(iTemp71, 2)); + let mut iTemp73: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, 98301), 196607)); + let mut fTemp74: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp73, 3)) as usize] }; + let mut fTemp75: F64 = unsafe { ftbl0mydspSIG0[iTemp73 as usize] }; + let mut fTemp76: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp73, 1)) as usize] } - fTemp75; + let mut fTemp77: F64 = fTemp70 - (iTemp71) as F64; + let mut fTemp78: F64 = fTemp75 + fTemp77 * fTemp76 + 0.5 * (fTemp74 - (fTemp75 + fTemp77 * (fTemp76 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp73, 4)) as usize] } - fTemp74)))); + let mut fTemp79: F64 = if iTemp63 != 0 {fTemp78} else {1.0 - fTemp78}; + let mut iTemp80: i32 = (fTemp62 < 0.0) as i32; + let mut fTemp81: F64 = fSlow1 * (iTemp80) as F64 + fSlow13 * (iTemp63) as F64; + self.fVec29[0] = fTemp81; + let mut fTemp82: F64 = self.fConst10 / fTemp81; + let mut fTemp83: F64 = fTemp82 + 0.5; + let mut fTemp84: F64 = 65535.0 * (1.0 - fTemp83); + let mut iTemp85: i32 = (fTemp84) as i32; + let mut iTemp86: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp85, 65535)))), 196607)); + let mut fTemp87: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp86, 3)) as usize] }; + let mut fTemp88: F64 = unsafe { ftbl0mydspSIG0[iTemp86 as usize] }; + let mut fTemp89: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp86, 1)) as usize] } - fTemp88; + let mut fTemp90: F64 = 65535.0 * fTemp83; + let mut iTemp91: i32 = (fTemp90) as i32; + let mut iTemp92: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp91, 65535)))), 196607)); + let mut fTemp93: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp92, 3), 196607))) as usize] }; + let mut fTemp94: F64 = unsafe { ftbl0mydspSIG0[iTemp92 as usize] }; + let mut fTemp95: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp92, 1), 196607))) as usize] } - fTemp94; + let mut fTemp96: F64 = 2.0 * self.fVec28[1]; + let mut iTemp97: i32 = (fTemp96) as i32; + let mut iTemp98: i32 = std::cmp::max(0, std::cmp::min(iTemp97, 2)); + let mut fTemp99: F64 = 65535.0 * (1.0 - self.fRec1[1]); + let mut iTemp100: i32 = (fTemp99) as i32; + let mut iTemp101: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp100, 65535))), iTemp98), 196607)); + let mut fTemp102: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp101, 3), 196607))) as usize] }; + let mut fTemp103: F64 = unsafe { ftbl0mydspSIG0[iTemp101 as usize] }; + let mut fTemp104: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp101, 1), 196607))) as usize] } - fTemp103; + let mut fTemp105: F64 = fTemp96 - (iTemp97) as F64; + let mut fTemp106: F64 = 65535.0 * self.fRec1[1]; + let mut iTemp107: i32 = (fTemp106) as i32; + let mut iTemp108: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp98, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp107, 65535)))), 196607)); + let mut fTemp109: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp108, 3), 196607))) as usize] }; + let mut fTemp110: F64 = unsafe { ftbl0mydspSIG0[iTemp108 as usize] }; + let mut fTemp111: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp108, 1), 196607))) as usize] } - fTemp110; + let mut fTemp112: F64 = self.fRec1[1] + fTemp82; + let mut fTemp113: F64 = 65535.0 * (1.0 - fTemp112); + let mut iTemp114: i32 = (fTemp113) as i32; + let mut iTemp115: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp114, 65535)))), 196607)); + let mut fTemp116: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp115, 3)) as usize] }; + let mut fTemp117: F64 = unsafe { ftbl0mydspSIG0[iTemp115 as usize] }; + let mut fTemp118: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp115, 1)) as usize] } - fTemp117; + let mut fTemp119: F64 = 65535.0 * fTemp112; + let mut iTemp120: i32 = (fTemp119) as i32; + let mut iTemp121: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp120, 65535)))), 196607)); + let mut fTemp122: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp121, 3), 196607))) as usize] }; + let mut fTemp123: F64 = unsafe { ftbl0mydspSIG0[iTemp121 as usize] }; + let mut fTemp124: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp121, 1), 196607))) as usize] } - fTemp123; + let mut fTemp125: F64 = self.fRec1[1] + self.fConst10 * (1.0 / fTemp81 + 1.0 / self.fVec29[1]); + let mut fTemp126: F64 = 65535.0 * (1.0 - fTemp125); + let mut iTemp127: i32 = (fTemp126) as i32; + let mut iTemp128: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp127, 65535))), iTemp72), 196607)); + let mut fTemp129: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp128, 3)) as usize] }; + let mut fTemp130: F64 = unsafe { ftbl0mydspSIG0[iTemp128 as usize] }; + let mut fTemp131: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp128, 1)) as usize] } - fTemp130; + let mut fTemp132: F64 = 65535.0 * fTemp125; + let mut iTemp133: i32 = (fTemp132) as i32; + let mut iTemp134: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp133, 65535)))), 196607)); + let mut fTemp135: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp134, 3), 196607))) as usize] }; + let mut fTemp136: F64 = unsafe { ftbl0mydspSIG0[iTemp134 as usize] }; + let mut fTemp137: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp134, 1), 196607))) as usize] } - fTemp136; + let mut fTemp138: F64 = (if iTemp63 != 0 {fTemp136 + fTemp77 * fTemp137 + (fTemp132 - (iTemp133) as F64) * (fTemp135 - (fTemp136 + fTemp77 * (fTemp137 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp134, 4), 196607))) as usize] } - fTemp135))))} else {1.0 - (fTemp130 + fTemp77 * fTemp131 + (fTemp126 - (iTemp127) as F64) * (fTemp129 - (fTemp130 + fTemp77 * (fTemp131 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp128, 4)) as usize] } - fTemp129)))))} - if iTemp63 != 0 {fTemp123 + fTemp77 * fTemp124 + (fTemp119 - (iTemp120) as F64) * (fTemp122 - (fTemp123 + fTemp77 * (fTemp124 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp121, 4), 196607))) as usize] } - fTemp122))))} else {1.0 - (fTemp117 + fTemp77 * fTemp118 + (fTemp113 - (iTemp114) as F64) * (fTemp116 - (fTemp117 + fTemp77 * (fTemp118 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp115, 4), 196607))) as usize] } - fTemp116)))))}) * self.fVec27[1] / (fTemp62 * (1.0 - if iTemp63 != 0 {fTemp110 + fTemp105 * fTemp111 + (fTemp106 - (iTemp107) as F64) * (fTemp109 - (fTemp110 + fTemp105 * (fTemp111 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp108, 4), 196607))) as usize] } - fTemp109))))} else {1.0 - (fTemp103 + fTemp105 * fTemp104 + (fTemp99 - (iTemp100) as F64) * (fTemp102 - (fTemp103 + fTemp105 * (fTemp104 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp101, 4), 196607))) as usize] } - fTemp102)))))})); + let mut iTemp139: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp94 + fTemp77 * fTemp95 + (fTemp90 - (iTemp91) as F64) * (fTemp93 - (fTemp94 + fTemp77 * (fTemp95 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp92, 4), 196607))) as usize] } - fTemp93))))} else {1.0 - (fTemp88 + fTemp77 * fTemp89 + (fTemp84 - (iTemp85) as F64) * (fTemp87 - (fTemp88 + fTemp77 * (fTemp89 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp86, 4)) as usize] } - fTemp87)))))} - fTemp79) / (1.0 - fTemp79))) as i32; + let mut fTemp140: F64 = if iTemp139 != 0 {1.0} else {0.5}; + let mut fTemp141: F64 = if iTemp139 != 0 {0.5} else {0.0}; + let mut fTemp142: F64 = fTemp141 + fTemp140; + let mut fTemp143: F64 = 0.5 * fTemp142; + let mut fTemp144: F64 = 65535.0 * (1.0 - fTemp143); + let mut iTemp145: i32 = (fTemp144) as i32; + let mut iTemp146: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp145, 65535)))), 196607)); + let mut fTemp147: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp146, 3)) as usize] }; + let mut fTemp148: F64 = unsafe { ftbl0mydspSIG0[iTemp146 as usize] }; + let mut fTemp149: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp146, 1)) as usize] } - fTemp148; + let mut fTemp150: F64 = 32767.5 * fTemp142; + let mut iTemp151: i32 = (fTemp150) as i32; + let mut iTemp152: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp151, 65535)))), 196607)); + let mut fTemp153: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp152, 3)) as usize] }; + let mut fTemp154: F64 = unsafe { ftbl0mydspSIG0[iTemp152 as usize] }; + let mut fTemp155: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp152, 1)) as usize] } - fTemp154; + let mut fTemp156: F64 = if iTemp63 != 0 {fTemp154 + fTemp77 * fTemp155 + (fTemp150 - (iTemp151) as F64) * (fTemp153 - (fTemp154 + fTemp77 * (fTemp155 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp152, 4)) as usize] } - fTemp153))))} else {1.0 - (fTemp148 + fTemp77 * fTemp149 + (fTemp144 - (iTemp145) as F64) * (fTemp147 - (fTemp148 + fTemp77 * (fTemp149 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp146, 4)) as usize] } - fTemp147)))))}; + let mut fTemp157: F64 = fTemp82 + fTemp143; + let mut fTemp158: F64 = 65535.0 * (1.0 - fTemp157); + let mut iTemp159: i32 = (fTemp158) as i32; + let mut iTemp160: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp159, 65535)))), 196607)); + let mut fTemp161: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp160, 3)) as usize] }; + let mut fTemp162: F64 = unsafe { ftbl0mydspSIG0[iTemp160 as usize] }; + let mut fTemp163: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp160, 1)) as usize] } - fTemp162; + let mut fTemp164: F64 = 65535.0 * fTemp157; + let mut iTemp165: i32 = (fTemp164) as i32; + let mut iTemp166: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp165, 65535)))), 196607)); + let mut fTemp167: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp166, 3), 196607))) as usize] }; + let mut fTemp168: F64 = unsafe { ftbl0mydspSIG0[iTemp166 as usize] }; + let mut fTemp169: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp166, 1), 196607))) as usize] } - fTemp168; + let mut iTemp170: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp168 + fTemp77 * fTemp169 + (fTemp164 - (iTemp165) as F64) * (fTemp167 - (fTemp168 + fTemp77 * (fTemp169 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp166, 4), 196607))) as usize] } - fTemp167))))} else {1.0 - (fTemp162 + fTemp77 * fTemp163 + (fTemp158 - (iTemp159) as F64) * (fTemp161 - (fTemp162 + fTemp77 * (fTemp163 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp160, 4)) as usize] } - fTemp161)))))} - fTemp156) / (1.0 - fTemp156))) as i32; + let mut fTemp171: F64 = if iTemp170 != 0 {fTemp140} else {fTemp143}; + let mut fTemp172: F64 = if iTemp170 != 0 {fTemp143} else {fTemp141}; + let mut fTemp173: F64 = fTemp172 + fTemp171; + let mut fTemp174: F64 = 0.5 * fTemp173; + let mut fTemp175: F64 = 65535.0 * (1.0 - fTemp174); + let mut iTemp176: i32 = (fTemp175) as i32; + let mut iTemp177: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp176, 65535)))), 196607)); + let mut fTemp178: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp177, 3)) as usize] }; + let mut fTemp179: F64 = unsafe { ftbl0mydspSIG0[iTemp177 as usize] }; + let mut fTemp180: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp177, 1)) as usize] } - fTemp179; + let mut fTemp181: F64 = 32767.5 * fTemp173; + let mut iTemp182: i32 = (fTemp181) as i32; + let mut iTemp183: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp182, 65535)))), 196607)); + let mut fTemp184: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp183, 3)) as usize] }; + let mut fTemp185: F64 = unsafe { ftbl0mydspSIG0[iTemp183 as usize] }; + let mut fTemp186: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp183, 1)) as usize] } - fTemp185; + let mut fTemp187: F64 = if iTemp63 != 0 {fTemp185 + fTemp77 * fTemp186 + (fTemp181 - (iTemp182) as F64) * (fTemp184 - (fTemp185 + fTemp77 * (fTemp186 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp183, 4)) as usize] } - fTemp184))))} else {1.0 - (fTemp179 + fTemp77 * fTemp180 + (fTemp175 - (iTemp176) as F64) * (fTemp178 - (fTemp179 + fTemp77 * (fTemp180 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp177, 4)) as usize] } - fTemp178)))))}; + let mut fTemp188: F64 = fTemp82 + fTemp174; + let mut fTemp189: F64 = 65535.0 * (1.0 - fTemp188); + let mut iTemp190: i32 = (fTemp189) as i32; + let mut iTemp191: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp190, 65535)))), 196607)); + let mut fTemp192: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp191, 3)) as usize] }; + let mut fTemp193: F64 = unsafe { ftbl0mydspSIG0[iTemp191 as usize] }; + let mut fTemp194: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp191, 1)) as usize] } - fTemp193; + let mut fTemp195: F64 = 65535.0 * fTemp188; + let mut iTemp196: i32 = (fTemp195) as i32; + let mut iTemp197: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp196, 65535)))), 196607)); + let mut fTemp198: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp197, 3), 196607))) as usize] }; + let mut fTemp199: F64 = unsafe { ftbl0mydspSIG0[iTemp197 as usize] }; + let mut fTemp200: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp197, 1), 196607))) as usize] } - fTemp199; + let mut iTemp201: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp199 + fTemp77 * fTemp200 + (fTemp195 - (iTemp196) as F64) * (fTemp198 - (fTemp199 + fTemp77 * (fTemp200 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp197, 4), 196607))) as usize] } - fTemp198))))} else {1.0 - (fTemp193 + fTemp77 * fTemp194 + (fTemp189 - (iTemp190) as F64) * (fTemp192 - (fTemp193 + fTemp77 * (fTemp194 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp191, 4)) as usize] } - fTemp192)))))} - fTemp187) / (1.0 - fTemp187))) as i32; + let mut fTemp202: F64 = if iTemp201 != 0 {fTemp171} else {fTemp174}; + let mut fTemp203: F64 = if iTemp201 != 0 {fTemp174} else {fTemp172}; + let mut fTemp204: F64 = fTemp203 + fTemp202; + let mut fTemp205: F64 = 0.5 * fTemp204; + let mut fTemp206: F64 = 65535.0 * (1.0 - fTemp205); + let mut iTemp207: i32 = (fTemp206) as i32; + let mut iTemp208: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp207, 65535)))), 196607)); + let mut fTemp209: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp208, 3)) as usize] }; + let mut fTemp210: F64 = unsafe { ftbl0mydspSIG0[iTemp208 as usize] }; + let mut fTemp211: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp208, 1)) as usize] } - fTemp210; + let mut fTemp212: F64 = 32767.5 * fTemp204; + let mut iTemp213: i32 = (fTemp212) as i32; + let mut iTemp214: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp213, 65535)))), 196607)); + let mut fTemp215: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp214, 3)) as usize] }; + let mut fTemp216: F64 = unsafe { ftbl0mydspSIG0[iTemp214 as usize] }; + let mut fTemp217: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp214, 1)) as usize] } - fTemp216; + let mut fTemp218: F64 = if iTemp63 != 0 {fTemp216 + fTemp77 * fTemp217 + (fTemp212 - (iTemp213) as F64) * (fTemp215 - (fTemp216 + fTemp77 * (fTemp217 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp214, 4)) as usize] } - fTemp215))))} else {1.0 - (fTemp210 + fTemp77 * fTemp211 + (fTemp206 - (iTemp207) as F64) * (fTemp209 - (fTemp210 + fTemp77 * (fTemp211 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp208, 4)) as usize] } - fTemp209)))))}; + let mut fTemp219: F64 = fTemp82 + fTemp205; + let mut fTemp220: F64 = 65535.0 * (1.0 - fTemp219); + let mut iTemp221: i32 = (fTemp220) as i32; + let mut iTemp222: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp221, 65535)))), 196607)); + let mut fTemp223: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp222, 3)) as usize] }; + let mut fTemp224: F64 = unsafe { ftbl0mydspSIG0[iTemp222 as usize] }; + let mut fTemp225: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp222, 1)) as usize] } - fTemp224; + let mut fTemp226: F64 = 65535.0 * fTemp219; + let mut iTemp227: i32 = (fTemp226) as i32; + let mut iTemp228: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp227, 65535)))), 196607)); + let mut fTemp229: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp228, 3), 196607))) as usize] }; + let mut fTemp230: F64 = unsafe { ftbl0mydspSIG0[iTemp228 as usize] }; + let mut fTemp231: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp228, 1), 196607))) as usize] } - fTemp230; + let mut iTemp232: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp230 + fTemp77 * fTemp231 + (fTemp226 - (iTemp227) as F64) * (fTemp229 - (fTemp230 + fTemp77 * (fTemp231 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp228, 4), 196607))) as usize] } - fTemp229))))} else {1.0 - (fTemp224 + fTemp77 * fTemp225 + (fTemp220 - (iTemp221) as F64) * (fTemp223 - (fTemp224 + fTemp77 * (fTemp225 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp222, 4)) as usize] } - fTemp223)))))} - fTemp218) / (1.0 - fTemp218))) as i32; + let mut fTemp233: F64 = if iTemp232 != 0 {fTemp202} else {fTemp205}; + let mut fTemp234: F64 = if iTemp232 != 0 {fTemp205} else {fTemp203}; + let mut fTemp235: F64 = fTemp234 + fTemp233; + let mut fTemp236: F64 = 0.5 * fTemp235; + let mut fTemp237: F64 = 65535.0 * (1.0 - fTemp236); + let mut iTemp238: i32 = (fTemp237) as i32; + let mut iTemp239: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp238, 65535)))), 196607)); + let mut fTemp240: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp239, 3)) as usize] }; + let mut fTemp241: F64 = unsafe { ftbl0mydspSIG0[iTemp239 as usize] }; + let mut fTemp242: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp239, 1)) as usize] } - fTemp241; + let mut fTemp243: F64 = 32767.5 * fTemp235; + let mut iTemp244: i32 = (fTemp243) as i32; + let mut iTemp245: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp244, 65535)))), 196607)); + let mut fTemp246: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp245, 3)) as usize] }; + let mut fTemp247: F64 = unsafe { ftbl0mydspSIG0[iTemp245 as usize] }; + let mut fTemp248: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp245, 1)) as usize] } - fTemp247; + let mut fTemp249: F64 = if iTemp63 != 0 {fTemp247 + fTemp77 * fTemp248 + (fTemp243 - (iTemp244) as F64) * (fTemp246 - (fTemp247 + fTemp77 * (fTemp248 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp245, 4)) as usize] } - fTemp246))))} else {1.0 - (fTemp241 + fTemp77 * fTemp242 + (fTemp237 - (iTemp238) as F64) * (fTemp240 - (fTemp241 + fTemp77 * (fTemp242 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp239, 4)) as usize] } - fTemp240)))))}; + let mut fTemp250: F64 = fTemp82 + fTemp236; + let mut fTemp251: F64 = 65535.0 * (1.0 - fTemp250); + let mut iTemp252: i32 = (fTemp251) as i32; + let mut iTemp253: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp252, 65535)))), 196607)); + let mut fTemp254: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp253, 3)) as usize] }; + let mut fTemp255: F64 = unsafe { ftbl0mydspSIG0[iTemp253 as usize] }; + let mut fTemp256: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp253, 1)) as usize] } - fTemp255; + let mut fTemp257: F64 = 65535.0 * fTemp250; + let mut iTemp258: i32 = (fTemp257) as i32; + let mut iTemp259: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp258, 65535)))), 196607)); + let mut fTemp260: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp259, 3), 196607))) as usize] }; + let mut fTemp261: F64 = unsafe { ftbl0mydspSIG0[iTemp259 as usize] }; + let mut fTemp262: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp259, 1), 196607))) as usize] } - fTemp261; + let mut iTemp263: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp261 + fTemp77 * fTemp262 + (fTemp257 - (iTemp258) as F64) * (fTemp260 - (fTemp261 + fTemp77 * (fTemp262 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp259, 4), 196607))) as usize] } - fTemp260))))} else {1.0 - (fTemp255 + fTemp77 * fTemp256 + (fTemp251 - (iTemp252) as F64) * (fTemp254 - (fTemp255 + fTemp77 * (fTemp256 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp253, 4)) as usize] } - fTemp254)))))} - fTemp249) / (1.0 - fTemp249))) as i32; + let mut fTemp264: F64 = if iTemp263 != 0 {fTemp233} else {fTemp236}; + let mut fTemp265: F64 = if iTemp263 != 0 {fTemp236} else {fTemp234}; + let mut fTemp266: F64 = fTemp265 + fTemp264; + let mut fTemp267: F64 = 0.5 * fTemp266; + let mut fTemp268: F64 = 65535.0 * (1.0 - fTemp267); + let mut iTemp269: i32 = (fTemp268) as i32; + let mut iTemp270: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp269, 65535)))), 196607)); + let mut fTemp271: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp270, 3)) as usize] }; + let mut fTemp272: F64 = unsafe { ftbl0mydspSIG0[iTemp270 as usize] }; + let mut fTemp273: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp270, 1)) as usize] } - fTemp272; + let mut fTemp274: F64 = 32767.5 * fTemp266; + let mut iTemp275: i32 = (fTemp274) as i32; + let mut iTemp276: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp275, 65535)))), 196607)); + let mut fTemp277: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp276, 3)) as usize] }; + let mut fTemp278: F64 = unsafe { ftbl0mydspSIG0[iTemp276 as usize] }; + let mut fTemp279: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp276, 1)) as usize] } - fTemp278; + let mut fTemp280: F64 = if iTemp63 != 0 {fTemp278 + fTemp77 * fTemp279 + (fTemp274 - (iTemp275) as F64) * (fTemp277 - (fTemp278 + fTemp77 * (fTemp279 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp276, 4)) as usize] } - fTemp277))))} else {1.0 - (fTemp272 + fTemp77 * fTemp273 + (fTemp268 - (iTemp269) as F64) * (fTemp271 - (fTemp272 + fTemp77 * (fTemp273 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp270, 4)) as usize] } - fTemp271)))))}; + let mut fTemp281: F64 = fTemp82 + fTemp267; + let mut fTemp282: F64 = 65535.0 * (1.0 - fTemp281); + let mut iTemp283: i32 = (fTemp282) as i32; + let mut iTemp284: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp283, 65535)))), 196607)); + let mut fTemp285: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp284, 3)) as usize] }; + let mut fTemp286: F64 = unsafe { ftbl0mydspSIG0[iTemp284 as usize] }; + let mut fTemp287: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp284, 1)) as usize] } - fTemp286; + let mut fTemp288: F64 = 65535.0 * fTemp281; + let mut iTemp289: i32 = (fTemp288) as i32; + let mut iTemp290: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp289, 65535)))), 196607)); + let mut fTemp291: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp290, 3), 196607))) as usize] }; + let mut fTemp292: F64 = unsafe { ftbl0mydspSIG0[iTemp290 as usize] }; + let mut fTemp293: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp290, 1), 196607))) as usize] } - fTemp292; + let mut iTemp294: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp292 + fTemp77 * fTemp293 + (fTemp288 - (iTemp289) as F64) * (fTemp291 - (fTemp292 + fTemp77 * (fTemp293 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp290, 4), 196607))) as usize] } - fTemp291))))} else {1.0 - (fTemp286 + fTemp77 * fTemp287 + (fTemp282 - (iTemp283) as F64) * (fTemp285 - (fTemp286 + fTemp77 * (fTemp287 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp284, 4)) as usize] } - fTemp285)))))} - fTemp280) / (1.0 - fTemp280))) as i32; + let mut fTemp295: F64 = if iTemp294 != 0 {fTemp264} else {fTemp267}; + let mut fTemp296: F64 = if iTemp294 != 0 {fTemp267} else {fTemp265}; + let mut fTemp297: F64 = fTemp296 + fTemp295; + let mut fTemp298: F64 = 0.5 * fTemp297; + let mut fTemp299: F64 = 65535.0 * (1.0 - fTemp298); + let mut iTemp300: i32 = (fTemp299) as i32; + let mut iTemp301: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp300, 65535)))), 196607)); + let mut fTemp302: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp301, 3)) as usize] }; + let mut fTemp303: F64 = unsafe { ftbl0mydspSIG0[iTemp301 as usize] }; + let mut fTemp304: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp301, 1)) as usize] } - fTemp303; + let mut fTemp305: F64 = 32767.5 * fTemp297; + let mut iTemp306: i32 = (fTemp305) as i32; + let mut iTemp307: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp306, 65535)))), 196607)); + let mut fTemp308: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp307, 3)) as usize] }; + let mut fTemp309: F64 = unsafe { ftbl0mydspSIG0[iTemp307 as usize] }; + let mut fTemp310: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp307, 1)) as usize] } - fTemp309; + let mut fTemp311: F64 = if iTemp63 != 0 {fTemp309 + fTemp77 * fTemp310 + (fTemp305 - (iTemp306) as F64) * (fTemp308 - (fTemp309 + fTemp77 * (fTemp310 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp307, 4)) as usize] } - fTemp308))))} else {1.0 - (fTemp303 + fTemp77 * fTemp304 + (fTemp299 - (iTemp300) as F64) * (fTemp302 - (fTemp303 + fTemp77 * (fTemp304 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp301, 4)) as usize] } - fTemp302)))))}; + let mut fTemp312: F64 = fTemp82 + fTemp298; + let mut fTemp313: F64 = 65535.0 * (1.0 - fTemp312); + let mut iTemp314: i32 = (fTemp313) as i32; + let mut iTemp315: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp314, 65535)))), 196607)); + let mut fTemp316: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp315, 3)) as usize] }; + let mut fTemp317: F64 = unsafe { ftbl0mydspSIG0[iTemp315 as usize] }; + let mut fTemp318: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp315, 1)) as usize] } - fTemp317; + let mut fTemp319: F64 = 65535.0 * fTemp312; + let mut iTemp320: i32 = (fTemp319) as i32; + let mut iTemp321: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp320, 65535)))), 196607)); + let mut fTemp322: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp321, 3), 196607))) as usize] }; + let mut fTemp323: F64 = unsafe { ftbl0mydspSIG0[iTemp321 as usize] }; + let mut fTemp324: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp321, 1), 196607))) as usize] } - fTemp323; + let mut iTemp325: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp323 + fTemp77 * fTemp324 + (fTemp319 - (iTemp320) as F64) * (fTemp322 - (fTemp323 + fTemp77 * (fTemp324 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp321, 4), 196607))) as usize] } - fTemp322))))} else {1.0 - (fTemp317 + fTemp77 * fTemp318 + (fTemp313 - (iTemp314) as F64) * (fTemp316 - (fTemp317 + fTemp77 * (fTemp318 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp315, 4)) as usize] } - fTemp316)))))} - fTemp311) / (1.0 - fTemp311))) as i32; + let mut fTemp326: F64 = if iTemp325 != 0 {fTemp295} else {fTemp298}; + let mut fTemp327: F64 = if iTemp325 != 0 {fTemp298} else {fTemp296}; + let mut fTemp328: F64 = fTemp327 + fTemp326; + let mut fTemp329: F64 = 0.5 * fTemp328; + let mut fTemp330: F64 = 65535.0 * (1.0 - fTemp329); + let mut iTemp331: i32 = (fTemp330) as i32; + let mut iTemp332: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp331, 65535)))), 196607)); + let mut fTemp333: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp332, 3)) as usize] }; + let mut fTemp334: F64 = unsafe { ftbl0mydspSIG0[iTemp332 as usize] }; + let mut fTemp335: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp332, 1)) as usize] } - fTemp334; + let mut fTemp336: F64 = 32767.5 * fTemp328; + let mut iTemp337: i32 = (fTemp336) as i32; + let mut iTemp338: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp337, 65535)))), 196607)); + let mut fTemp339: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp338, 3)) as usize] }; + let mut fTemp340: F64 = unsafe { ftbl0mydspSIG0[iTemp338 as usize] }; + let mut fTemp341: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp338, 1)) as usize] } - fTemp340; + let mut fTemp342: F64 = if iTemp63 != 0 {fTemp340 + fTemp77 * fTemp341 + (fTemp336 - (iTemp337) as F64) * (fTemp339 - (fTemp340 + fTemp77 * (fTemp341 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp338, 4)) as usize] } - fTemp339))))} else {1.0 - (fTemp334 + fTemp77 * fTemp335 + (fTemp330 - (iTemp331) as F64) * (fTemp333 - (fTemp334 + fTemp77 * (fTemp335 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp332, 4)) as usize] } - fTemp333)))))}; + let mut fTemp343: F64 = fTemp82 + fTemp329; + let mut fTemp344: F64 = 65535.0 * (1.0 - fTemp343); + let mut iTemp345: i32 = (fTemp344) as i32; + let mut iTemp346: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp345, 65535)))), 196607)); + let mut fTemp347: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp346, 3)) as usize] }; + let mut fTemp348: F64 = unsafe { ftbl0mydspSIG0[iTemp346 as usize] }; + let mut fTemp349: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp346, 1)) as usize] } - fTemp348; + let mut fTemp350: F64 = 65535.0 * fTemp343; + let mut iTemp351: i32 = (fTemp350) as i32; + let mut iTemp352: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp351, 65535)))), 196607)); + let mut fTemp353: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp352, 3), 196607))) as usize] }; + let mut fTemp354: F64 = unsafe { ftbl0mydspSIG0[iTemp352 as usize] }; + let mut fTemp355: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp352, 1), 196607))) as usize] } - fTemp354; + let mut iTemp356: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp354 + fTemp77 * fTemp355 + (fTemp350 - (iTemp351) as F64) * (fTemp353 - (fTemp354 + fTemp77 * (fTemp355 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp352, 4), 196607))) as usize] } - fTemp353))))} else {1.0 - (fTemp348 + fTemp77 * fTemp349 + (fTemp344 - (iTemp345) as F64) * (fTemp347 - (fTemp348 + fTemp77 * (fTemp349 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp346, 4)) as usize] } - fTemp347)))))} - fTemp342) / (1.0 - fTemp342))) as i32; + let mut fTemp357: F64 = if iTemp356 != 0 {fTemp326} else {fTemp329}; + let mut fTemp358: F64 = if iTemp356 != 0 {fTemp329} else {fTemp327}; + let mut fTemp359: F64 = fTemp358 + fTemp357; + let mut fTemp360: F64 = 0.5 * fTemp359; + let mut fTemp361: F64 = 65535.0 * (1.0 - fTemp360); + let mut iTemp362: i32 = (fTemp361) as i32; + let mut iTemp363: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp362, 65535)))), 196607)); + let mut fTemp364: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp363, 3)) as usize] }; + let mut fTemp365: F64 = unsafe { ftbl0mydspSIG0[iTemp363 as usize] }; + let mut fTemp366: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp363, 1)) as usize] } - fTemp365; + let mut fTemp367: F64 = 32767.5 * fTemp359; + let mut iTemp368: i32 = (fTemp367) as i32; + let mut iTemp369: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp368, 65535)))), 196607)); + let mut fTemp370: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp369, 3)) as usize] }; + let mut fTemp371: F64 = unsafe { ftbl0mydspSIG0[iTemp369 as usize] }; + let mut fTemp372: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp369, 1)) as usize] } - fTemp371; + let mut fTemp373: F64 = if iTemp63 != 0 {fTemp371 + fTemp77 * fTemp372 + (fTemp367 - (iTemp368) as F64) * (fTemp370 - (fTemp371 + fTemp77 * (fTemp372 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp369, 4)) as usize] } - fTemp370))))} else {1.0 - (fTemp365 + fTemp77 * fTemp366 + (fTemp361 - (iTemp362) as F64) * (fTemp364 - (fTemp365 + fTemp77 * (fTemp366 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp363, 4)) as usize] } - fTemp364)))))}; + let mut fTemp374: F64 = fTemp82 + fTemp360; + let mut fTemp375: F64 = 65535.0 * (1.0 - fTemp374); + let mut iTemp376: i32 = (fTemp375) as i32; + let mut iTemp377: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp376, 65535)))), 196607)); + let mut fTemp378: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp377, 3)) as usize] }; + let mut fTemp379: F64 = unsafe { ftbl0mydspSIG0[iTemp377 as usize] }; + let mut fTemp380: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp377, 1)) as usize] } - fTemp379; + let mut fTemp381: F64 = 65535.0 * fTemp374; + let mut iTemp382: i32 = (fTemp381) as i32; + let mut iTemp383: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp382, 65535)))), 196607)); + let mut fTemp384: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp383, 3), 196607))) as usize] }; + let mut fTemp385: F64 = unsafe { ftbl0mydspSIG0[iTemp383 as usize] }; + let mut fTemp386: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp383, 1), 196607))) as usize] } - fTemp385; + let mut iTemp387: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp385 + fTemp77 * fTemp386 + (fTemp381 - (iTemp382) as F64) * (fTemp384 - (fTemp385 + fTemp77 * (fTemp386 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp383, 4), 196607))) as usize] } - fTemp384))))} else {1.0 - (fTemp379 + fTemp77 * fTemp380 + (fTemp375 - (iTemp376) as F64) * (fTemp378 - (fTemp379 + fTemp77 * (fTemp380 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp377, 4)) as usize] } - fTemp378)))))} - fTemp373) / (1.0 - fTemp373))) as i32; + let mut fTemp388: F64 = if iTemp387 != 0 {fTemp357} else {fTemp360}; + let mut fTemp389: F64 = if iTemp387 != 0 {fTemp360} else {fTemp358}; + let mut fTemp390: F64 = fTemp389 + fTemp388; + let mut fTemp391: F64 = 0.5 * fTemp390; + let mut fTemp392: F64 = 65535.0 * (1.0 - fTemp391); + let mut iTemp393: i32 = (fTemp392) as i32; + let mut iTemp394: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp393, 65535)))), 196607)); + let mut fTemp395: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp394, 3)) as usize] }; + let mut fTemp396: F64 = unsafe { ftbl0mydspSIG0[iTemp394 as usize] }; + let mut fTemp397: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp394, 1)) as usize] } - fTemp396; + let mut fTemp398: F64 = 32767.5 * fTemp390; + let mut iTemp399: i32 = (fTemp398) as i32; + let mut iTemp400: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp399, 65535)))), 196607)); + let mut fTemp401: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp400, 3)) as usize] }; + let mut fTemp402: F64 = unsafe { ftbl0mydspSIG0[iTemp400 as usize] }; + let mut fTemp403: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp400, 1)) as usize] } - fTemp402; + let mut fTemp404: F64 = if iTemp63 != 0 {fTemp402 + fTemp77 * fTemp403 + (fTemp398 - (iTemp399) as F64) * (fTemp401 - (fTemp402 + fTemp77 * (fTemp403 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp400, 4)) as usize] } - fTemp401))))} else {1.0 - (fTemp396 + fTemp77 * fTemp397 + (fTemp392 - (iTemp393) as F64) * (fTemp395 - (fTemp396 + fTemp77 * (fTemp397 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp394, 4)) as usize] } - fTemp395)))))}; + let mut fTemp405: F64 = fTemp82 + fTemp391; + let mut fTemp406: F64 = 65535.0 * (1.0 - fTemp405); + let mut iTemp407: i32 = (fTemp406) as i32; + let mut iTemp408: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp407, 65535)))), 196607)); + let mut fTemp409: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp408, 3)) as usize] }; + let mut fTemp410: F64 = unsafe { ftbl0mydspSIG0[iTemp408 as usize] }; + let mut fTemp411: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp408, 1)) as usize] } - fTemp410; + let mut fTemp412: F64 = 65535.0 * fTemp405; + let mut iTemp413: i32 = (fTemp412) as i32; + let mut iTemp414: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp413, 65535)))), 196607)); + let mut fTemp415: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp414, 3), 196607))) as usize] }; + let mut fTemp416: F64 = unsafe { ftbl0mydspSIG0[iTemp414 as usize] }; + let mut fTemp417: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp414, 1), 196607))) as usize] } - fTemp416; + let mut iTemp418: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp416 + fTemp77 * fTemp417 + (fTemp412 - (iTemp413) as F64) * (fTemp415 - (fTemp416 + fTemp77 * (fTemp417 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp414, 4), 196607))) as usize] } - fTemp415))))} else {1.0 - (fTemp410 + fTemp77 * fTemp411 + (fTemp406 - (iTemp407) as F64) * (fTemp409 - (fTemp410 + fTemp77 * (fTemp411 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp408, 4)) as usize] } - fTemp409)))))} - fTemp404) / (1.0 - fTemp404))) as i32; + let mut fTemp419: F64 = if iTemp418 != 0 {fTemp388} else {fTemp391}; + let mut fTemp420: F64 = if iTemp418 != 0 {fTemp391} else {fTemp389}; + let mut fTemp421: F64 = fTemp420 + fTemp419; + let mut fTemp422: F64 = 0.5 * fTemp421; + let mut fTemp423: F64 = 65535.0 * (1.0 - fTemp422); + let mut iTemp424: i32 = (fTemp423) as i32; + let mut iTemp425: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp424, 65535)))), 196607)); + let mut fTemp426: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp425, 3)) as usize] }; + let mut fTemp427: F64 = unsafe { ftbl0mydspSIG0[iTemp425 as usize] }; + let mut fTemp428: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp425, 1)) as usize] } - fTemp427; + let mut fTemp429: F64 = 32767.5 * fTemp421; + let mut iTemp430: i32 = (fTemp429) as i32; + let mut iTemp431: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp430, 65535)))), 196607)); + let mut fTemp432: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp431, 3)) as usize] }; + let mut fTemp433: F64 = unsafe { ftbl0mydspSIG0[iTemp431 as usize] }; + let mut fTemp434: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp431, 1)) as usize] } - fTemp433; + let mut fTemp435: F64 = if iTemp63 != 0 {fTemp433 + fTemp77 * fTemp434 + (fTemp429 - (iTemp430) as F64) * (fTemp432 - (fTemp433 + fTemp77 * (fTemp434 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp431, 4)) as usize] } - fTemp432))))} else {1.0 - (fTemp427 + fTemp77 * fTemp428 + (fTemp423 - (iTemp424) as F64) * (fTemp426 - (fTemp427 + fTemp77 * (fTemp428 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp425, 4)) as usize] } - fTemp426)))))}; + let mut fTemp436: F64 = fTemp82 + fTemp422; + let mut fTemp437: F64 = 65535.0 * (1.0 - fTemp436); + let mut iTemp438: i32 = (fTemp437) as i32; + let mut iTemp439: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp438, 65535)))), 196607)); + let mut fTemp440: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp439, 3)) as usize] }; + let mut fTemp441: F64 = unsafe { ftbl0mydspSIG0[iTemp439 as usize] }; + let mut fTemp442: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp439, 1)) as usize] } - fTemp441; + let mut fTemp443: F64 = 65535.0 * fTemp436; + let mut iTemp444: i32 = (fTemp443) as i32; + let mut iTemp445: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp444, 65535)))), 196607)); + let mut fTemp446: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp445, 3), 196607))) as usize] }; + let mut fTemp447: F64 = unsafe { ftbl0mydspSIG0[iTemp445 as usize] }; + let mut fTemp448: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp445, 1), 196607))) as usize] } - fTemp447; + let mut iTemp449: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp447 + fTemp77 * fTemp448 + (fTemp443 - (iTemp444) as F64) * (fTemp446 - (fTemp447 + fTemp77 * (fTemp448 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp445, 4), 196607))) as usize] } - fTemp446))))} else {1.0 - (fTemp441 + fTemp77 * fTemp442 + (fTemp437 - (iTemp438) as F64) * (fTemp440 - (fTemp441 + fTemp77 * (fTemp442 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp439, 4)) as usize] } - fTemp440)))))} - fTemp435) / (1.0 - fTemp435))) as i32; + let mut fTemp450: F64 = if iTemp449 != 0 {fTemp419} else {fTemp422}; + let mut fTemp451: F64 = if iTemp449 != 0 {fTemp422} else {fTemp420}; + let mut fTemp452: F64 = fTemp451 + fTemp450; + let mut fTemp453: F64 = 0.5 * fTemp452; + let mut fTemp454: F64 = 65535.0 * (1.0 - fTemp453); + let mut iTemp455: i32 = (fTemp454) as i32; + let mut iTemp456: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp455, 65535)))), 196607)); + let mut fTemp457: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp456, 3)) as usize] }; + let mut fTemp458: F64 = unsafe { ftbl0mydspSIG0[iTemp456 as usize] }; + let mut fTemp459: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp456, 1)) as usize] } - fTemp458; + let mut fTemp460: F64 = 32767.5 * fTemp452; + let mut iTemp461: i32 = (fTemp460) as i32; + let mut iTemp462: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp461, 65535)))), 196607)); + let mut fTemp463: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp462, 3)) as usize] }; + let mut fTemp464: F64 = unsafe { ftbl0mydspSIG0[iTemp462 as usize] }; + let mut fTemp465: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp462, 1)) as usize] } - fTemp464; + let mut fTemp466: F64 = if iTemp63 != 0 {fTemp464 + fTemp77 * fTemp465 + (fTemp460 - (iTemp461) as F64) * (fTemp463 - (fTemp464 + fTemp77 * (fTemp465 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp462, 4)) as usize] } - fTemp463))))} else {1.0 - (fTemp458 + fTemp77 * fTemp459 + (fTemp454 - (iTemp455) as F64) * (fTemp457 - (fTemp458 + fTemp77 * (fTemp459 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp456, 4)) as usize] } - fTemp457)))))}; + let mut fTemp467: F64 = fTemp82 + fTemp453; + let mut fTemp468: F64 = 65535.0 * (1.0 - fTemp467); + let mut iTemp469: i32 = (fTemp468) as i32; + let mut iTemp470: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp469, 65535)))), 196607)); + let mut fTemp471: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp470, 3)) as usize] }; + let mut fTemp472: F64 = unsafe { ftbl0mydspSIG0[iTemp470 as usize] }; + let mut fTemp473: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp470, 1)) as usize] } - fTemp472; + let mut fTemp474: F64 = 65535.0 * fTemp467; + let mut iTemp475: i32 = (fTemp474) as i32; + let mut iTemp476: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp475, 65535)))), 196607)); + let mut fTemp477: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp476, 3), 196607))) as usize] }; + let mut fTemp478: F64 = unsafe { ftbl0mydspSIG0[iTemp476 as usize] }; + let mut fTemp479: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp476, 1), 196607))) as usize] } - fTemp478; + let mut iTemp480: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp478 + fTemp77 * fTemp479 + (fTemp474 - (iTemp475) as F64) * (fTemp477 - (fTemp478 + fTemp77 * (fTemp479 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp476, 4), 196607))) as usize] } - fTemp477))))} else {1.0 - (fTemp472 + fTemp77 * fTemp473 + (fTemp468 - (iTemp469) as F64) * (fTemp471 - (fTemp472 + fTemp77 * (fTemp473 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp470, 4)) as usize] } - fTemp471)))))} - fTemp466) / (1.0 - fTemp466))) as i32; + let mut fTemp481: F64 = if iTemp480 != 0 {fTemp450} else {fTemp453}; + let mut fTemp482: F64 = if iTemp480 != 0 {fTemp453} else {fTemp451}; + let mut fTemp483: F64 = fTemp482 + fTemp481; + let mut fTemp484: F64 = 0.5 * fTemp483; + let mut fTemp485: F64 = 65535.0 * (1.0 - fTemp484); + let mut iTemp486: i32 = (fTemp485) as i32; + let mut iTemp487: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp486, 65535)))), 196607)); + let mut fTemp488: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp487, 3)) as usize] }; + let mut fTemp489: F64 = unsafe { ftbl0mydspSIG0[iTemp487 as usize] }; + let mut fTemp490: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp487, 1)) as usize] } - fTemp489; + let mut fTemp491: F64 = 32767.5 * fTemp483; + let mut iTemp492: i32 = (fTemp491) as i32; + let mut iTemp493: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp492, 65535)))), 196607)); + let mut fTemp494: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp493, 3)) as usize] }; + let mut fTemp495: F64 = unsafe { ftbl0mydspSIG0[iTemp493 as usize] }; + let mut fTemp496: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp493, 1)) as usize] } - fTemp495; + let mut fTemp497: F64 = if iTemp63 != 0 {fTemp495 + fTemp77 * fTemp496 + (fTemp491 - (iTemp492) as F64) * (fTemp494 - (fTemp495 + fTemp77 * (fTemp496 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp493, 4)) as usize] } - fTemp494))))} else {1.0 - (fTemp489 + fTemp77 * fTemp490 + (fTemp485 - (iTemp486) as F64) * (fTemp488 - (fTemp489 + fTemp77 * (fTemp490 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp487, 4)) as usize] } - fTemp488)))))}; + let mut fTemp498: F64 = fTemp82 + fTemp484; + let mut fTemp499: F64 = 65535.0 * (1.0 - fTemp498); + let mut iTemp500: i32 = (fTemp499) as i32; + let mut iTemp501: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp500, 65535)))), 196607)); + let mut fTemp502: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp501, 3)) as usize] }; + let mut fTemp503: F64 = unsafe { ftbl0mydspSIG0[iTemp501 as usize] }; + let mut fTemp504: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp501, 1)) as usize] } - fTemp503; + let mut fTemp505: F64 = 65535.0 * fTemp498; + let mut iTemp506: i32 = (fTemp505) as i32; + let mut iTemp507: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp506, 65535)))), 196607)); + let mut fTemp508: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp507, 3), 196607))) as usize] }; + let mut fTemp509: F64 = unsafe { ftbl0mydspSIG0[iTemp507 as usize] }; + let mut fTemp510: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp507, 1), 196607))) as usize] } - fTemp509; + let mut iTemp511: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp509 + fTemp77 * fTemp510 + (fTemp505 - (iTemp506) as F64) * (fTemp508 - (fTemp509 + fTemp77 * (fTemp510 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp507, 4), 196607))) as usize] } - fTemp508))))} else {1.0 - (fTemp503 + fTemp77 * fTemp504 + (fTemp499 - (iTemp500) as F64) * (fTemp502 - (fTemp503 + fTemp77 * (fTemp504 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp501, 4)) as usize] } - fTemp502)))))} - fTemp497) / (1.0 - fTemp497))) as i32; + let mut fTemp512: F64 = if iTemp511 != 0 {fTemp481} else {fTemp484}; + let mut fTemp513: F64 = if iTemp511 != 0 {fTemp484} else {fTemp482}; + let mut fTemp514: F64 = fTemp513 + fTemp512; + let mut fTemp515: F64 = 0.5 * fTemp514; + let mut fTemp516: F64 = 65535.0 * (1.0 - fTemp515); + let mut iTemp517: i32 = (fTemp516) as i32; + let mut iTemp518: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp517, 65535)))), 196607)); + let mut fTemp519: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp518, 3)) as usize] }; + let mut fTemp520: F64 = unsafe { ftbl0mydspSIG0[iTemp518 as usize] }; + let mut fTemp521: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp518, 1)) as usize] } - fTemp520; + let mut fTemp522: F64 = 32767.5 * fTemp514; + let mut iTemp523: i32 = (fTemp522) as i32; + let mut iTemp524: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp523, 65535)))), 196607)); + let mut fTemp525: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp524, 3)) as usize] }; + let mut fTemp526: F64 = unsafe { ftbl0mydspSIG0[iTemp524 as usize] }; + let mut fTemp527: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp524, 1)) as usize] } - fTemp526; + let mut fTemp528: F64 = if iTemp63 != 0 {fTemp526 + fTemp77 * fTemp527 + (fTemp522 - (iTemp523) as F64) * (fTemp525 - (fTemp526 + fTemp77 * (fTemp527 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp524, 4)) as usize] } - fTemp525))))} else {1.0 - (fTemp520 + fTemp77 * fTemp521 + (fTemp516 - (iTemp517) as F64) * (fTemp519 - (fTemp520 + fTemp77 * (fTemp521 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp518, 4)) as usize] } - fTemp519)))))}; + let mut fTemp529: F64 = fTemp82 + fTemp515; + let mut fTemp530: F64 = 65535.0 * (1.0 - fTemp529); + let mut iTemp531: i32 = (fTemp530) as i32; + let mut iTemp532: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp531, 65535)))), 196607)); + let mut fTemp533: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp532, 3)) as usize] }; + let mut fTemp534: F64 = unsafe { ftbl0mydspSIG0[iTemp532 as usize] }; + let mut fTemp535: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp532, 1)) as usize] } - fTemp534; + let mut fTemp536: F64 = 65535.0 * fTemp529; + let mut iTemp537: i32 = (fTemp536) as i32; + let mut iTemp538: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp537, 65535)))), 196607)); + let mut fTemp539: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp538, 3), 196607))) as usize] }; + let mut fTemp540: F64 = unsafe { ftbl0mydspSIG0[iTemp538 as usize] }; + let mut fTemp541: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp538, 1), 196607))) as usize] } - fTemp540; + let mut iTemp542: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp540 + fTemp77 * fTemp541 + (fTemp536 - (iTemp537) as F64) * (fTemp539 - (fTemp540 + fTemp77 * (fTemp541 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp538, 4), 196607))) as usize] } - fTemp539))))} else {1.0 - (fTemp534 + fTemp77 * fTemp535 + (fTemp530 - (iTemp531) as F64) * (fTemp533 - (fTemp534 + fTemp77 * (fTemp535 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp532, 4)) as usize] } - fTemp533)))))} - fTemp528) / (1.0 - fTemp528))) as i32; + let mut fTemp543: F64 = if iTemp542 != 0 {fTemp512} else {fTemp515}; + let mut fTemp544: F64 = if iTemp542 != 0 {fTemp515} else {fTemp513}; + let mut fTemp545: F64 = fTemp544 + fTemp543; + let mut fTemp546: F64 = 0.5 * fTemp545; + let mut fTemp547: F64 = 65535.0 * (1.0 - fTemp546); + let mut iTemp548: i32 = (fTemp547) as i32; + let mut iTemp549: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp548, 65535)))), 196607)); + let mut fTemp550: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp549, 3)) as usize] }; + let mut fTemp551: F64 = unsafe { ftbl0mydspSIG0[iTemp549 as usize] }; + let mut fTemp552: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp549, 1)) as usize] } - fTemp551; + let mut fTemp553: F64 = 32767.5 * fTemp545; + let mut iTemp554: i32 = (fTemp553) as i32; + let mut iTemp555: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp554, 65535)))), 196607)); + let mut fTemp556: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp555, 3)) as usize] }; + let mut fTemp557: F64 = unsafe { ftbl0mydspSIG0[iTemp555 as usize] }; + let mut fTemp558: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp555, 1)) as usize] } - fTemp557; + let mut fTemp559: F64 = if iTemp63 != 0 {fTemp557 + fTemp77 * fTemp558 + (fTemp553 - (iTemp554) as F64) * (fTemp556 - (fTemp557 + fTemp77 * (fTemp558 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp555, 4)) as usize] } - fTemp556))))} else {1.0 - (fTemp551 + fTemp77 * fTemp552 + (fTemp547 - (iTemp548) as F64) * (fTemp550 - (fTemp551 + fTemp77 * (fTemp552 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp549, 4)) as usize] } - fTemp550)))))}; + let mut fTemp560: F64 = fTemp82 + fTemp546; + let mut fTemp561: F64 = 65535.0 * (1.0 - fTemp560); + let mut iTemp562: i32 = (fTemp561) as i32; + let mut iTemp563: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp562, 65535)))), 196607)); + let mut fTemp564: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp563, 3)) as usize] }; + let mut fTemp565: F64 = unsafe { ftbl0mydspSIG0[iTemp563 as usize] }; + let mut fTemp566: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp563, 1)) as usize] } - fTemp565; + let mut fTemp567: F64 = 65535.0 * fTemp560; + let mut iTemp568: i32 = (fTemp567) as i32; + let mut iTemp569: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp568, 65535)))), 196607)); + let mut fTemp570: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp569, 3), 196607))) as usize] }; + let mut fTemp571: F64 = unsafe { ftbl0mydspSIG0[iTemp569 as usize] }; + let mut fTemp572: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp569, 1), 196607))) as usize] } - fTemp571; + let mut iTemp573: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp571 + fTemp77 * fTemp572 + (fTemp567 - (iTemp568) as F64) * (fTemp570 - (fTemp571 + fTemp77 * (fTemp572 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp569, 4), 196607))) as usize] } - fTemp570))))} else {1.0 - (fTemp565 + fTemp77 * fTemp566 + (fTemp561 - (iTemp562) as F64) * (fTemp564 - (fTemp565 + fTemp77 * (fTemp566 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp563, 4)) as usize] } - fTemp564)))))} - fTemp559) / (1.0 - fTemp559))) as i32; + let mut fTemp574: F64 = if iTemp573 != 0 {fTemp543} else {fTemp546}; + let mut fTemp575: F64 = if iTemp573 != 0 {fTemp546} else {fTemp544}; + let mut fTemp576: F64 = fTemp575 + fTemp574; + let mut fTemp577: F64 = 0.5 * fTemp576; + let mut fTemp578: F64 = 65535.0 * (1.0 - fTemp577); + let mut iTemp579: i32 = (fTemp578) as i32; + let mut iTemp580: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp579, 65535)))), 196607)); + let mut fTemp581: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp580, 3)) as usize] }; + let mut fTemp582: F64 = unsafe { ftbl0mydspSIG0[iTemp580 as usize] }; + let mut fTemp583: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp580, 1)) as usize] } - fTemp582; + let mut fTemp584: F64 = 32767.5 * fTemp576; + let mut iTemp585: i32 = (fTemp584) as i32; + let mut iTemp586: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp585, 65535)))), 196607)); + let mut fTemp587: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp586, 3)) as usize] }; + let mut fTemp588: F64 = unsafe { ftbl0mydspSIG0[iTemp586 as usize] }; + let mut fTemp589: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp586, 1)) as usize] } - fTemp588; + let mut fTemp590: F64 = if iTemp63 != 0 {fTemp588 + fTemp77 * fTemp589 + (fTemp584 - (iTemp585) as F64) * (fTemp587 - (fTemp588 + fTemp77 * (fTemp589 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp586, 4), 196607))) as usize] } - fTemp587))))} else {1.0 - (fTemp582 + fTemp77 * fTemp583 + (fTemp578 - (iTemp579) as F64) * (fTemp581 - (fTemp582 + fTemp77 * (fTemp583 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp580, 4), 196607))) as usize] } - fTemp581)))))}; + let mut fTemp591: F64 = fTemp82 + fTemp577; + let mut fTemp592: F64 = 65535.0 * (1.0 - fTemp591); + let mut iTemp593: i32 = (fTemp592) as i32; + let mut iTemp594: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp593, 65535)))), 196607)); + let mut fTemp595: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp594, 3)) as usize] }; + let mut fTemp596: F64 = unsafe { ftbl0mydspSIG0[iTemp594 as usize] }; + let mut fTemp597: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp594, 1)) as usize] } - fTemp596; + let mut fTemp598: F64 = 65535.0 * fTemp591; + let mut iTemp599: i32 = (fTemp598) as i32; + let mut iTemp600: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp599, 65535)))), 196607)); + let mut fTemp601: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp600, 3), 196607))) as usize] }; + let mut fTemp602: F64 = unsafe { ftbl0mydspSIG0[iTemp600 as usize] }; + let mut fTemp603: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp600, 1), 196607))) as usize] } - fTemp602; + let mut iTemp604: i32 = (fTemp138 > ((if iTemp63 != 0 {fTemp602 + fTemp77 * fTemp603 + (fTemp598 - (iTemp599) as F64) * (fTemp601 - (fTemp602 + fTemp77 * (fTemp603 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp600, 4), 196607))) as usize] } - fTemp601))))} else {1.0 - (fTemp596 + fTemp77 * fTemp597 + (fTemp592 - (iTemp593) as F64) * (fTemp595 - (fTemp596 + fTemp77 * (fTemp597 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp594, 4)) as usize] } - fTemp595)))))} - fTemp590) / (1.0 - fTemp590))) as i32; + let mut fTemp605: F64 = F64::min(1.0, F64::max(0.0, 0.5 * (if iTemp604 != 0 {fTemp577} else {fTemp575} + if iTemp604 != 0 {fTemp574} else {fTemp577}))); + self.fRec1[0] = fTemp605; + let mut fTemp606: F64 = 65535.0 * (1.0 - fTemp605); + let mut iTemp607: i32 = (fTemp606) as i32; + let mut iTemp608: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp607, 65535)))), 196607)); + let mut fTemp609: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp608, 3)) as usize] }; + let mut fTemp610: F64 = unsafe { ftbl0mydspSIG0[iTemp608 as usize] }; + let mut fTemp611: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp608, 1)) as usize] } - fTemp610; + let mut fTemp612: F64 = 65535.0 * fTemp605; + let mut iTemp613: i32 = (fTemp612) as i32; + let mut iTemp614: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp613, 65535)))), 196607)); + let mut fTemp615: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp614, 3)) as usize] }; + let mut fTemp616: F64 = unsafe { ftbl0mydspSIG0[iTemp614 as usize] }; + let mut fTemp617: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp614, 1)) as usize] } - fTemp616; + let mut fTemp618: F64 = if iTemp63 != 0 {fTemp616 + fTemp77 * fTemp617 + (fTemp612 - (iTemp613) as F64) * (fTemp615 - (fTemp616 + fTemp77 * (fTemp617 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp614, 4), 196607))) as usize] } - fTemp615))))} else {1.0 - (fTemp610 + fTemp77 * fTemp611 + (fTemp606 - (iTemp607) as F64) * (fTemp609 - (fTemp610 + fTemp77 * (fTemp611 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp608, 4), 196607))) as usize] } - fTemp609)))))}; + let mut fTemp619: F64 = fTemp82 + fTemp605; + let mut fTemp620: F64 = 65535.0 * (1.0 - fTemp619); + let mut iTemp621: i32 = (fTemp620) as i32; + let mut iTemp622: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp621, 65535)))), 196607)); + let mut fTemp623: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp622, 3)) as usize] }; + let mut fTemp624: F64 = unsafe { ftbl0mydspSIG0[iTemp622 as usize] }; + let mut fTemp625: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp622, 1)) as usize] } - fTemp624; + let mut fTemp626: F64 = 65535.0 * fTemp619; + let mut iTemp627: i32 = (fTemp626) as i32; + let mut iTemp628: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp72, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp627, 65535)))), 196607)); + let mut fTemp629: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp628, 3), 196607))) as usize] }; + let mut fTemp630: F64 = unsafe { ftbl0mydspSIG0[iTemp628 as usize] }; + let mut fTemp631: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp628, 1), 196607))) as usize] } - fTemp630; + let mut fTemp632: F64 = fTemp5 + if ((0.001 * fTemp81) == 0.0) as i32 != 0 {fTemp62} else {fTemp62 * (if iTemp63 != 0 {fTemp630 + fTemp77 * fTemp631 + (fTemp626 - (iTemp627) as F64) * (fTemp629 - (fTemp630 + fTemp77 * (fTemp631 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp628, 4), 196607))) as usize] } - fTemp629))))} else {1.0 - (fTemp624 + fTemp77 * fTemp625 + (fTemp620 - (iTemp621) as F64) * (fTemp623 - (fTemp624 + fTemp77 * (fTemp625 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp622, 4)) as usize] } - fTemp623)))))} - fTemp618) / (1.0 - fTemp618)}; + self.fRec2[(self.IOTA0 & 8191) as usize] = if iTemp80 != 0 {F64::min(fTemp632, fTemp5)} else {F64::max(fTemp632, fTemp5)}; + let mut fTemp633: F64 = self.fRec2[((i32::wrapping_sub(self.IOTA0, iSlow70)) & 8191) as usize]; + self.fHbargraph0 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp633)); self.fRec14[0] = fSlow72 + self.fConst4 * self.fRec14[1]; - *output0 = 0.5 * self.fVec0[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] * fTemp2 + self.fRec14[0] * self.fVec1[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] * fTemp632 * fTemp3; - let mut fTemp633: F64 = self.fRec16[((i32::wrapping_sub(self.IOTA0, 1)) & 8191) as usize]; - let mut fTemp634: F64 = fTemp35 + fSlow17 * (fTemp36 - fTemp35); - let mut iTemp635: i32 = ((fTemp634 > fSlow11) as i32) + ((fTemp634 > fSlow9) as i32); - let mut fTemp636: F64 = fTemp634 - fSlow8; - let mut fTemp637: F64 = F64::min(fTemp33, F64::powf(1e+01, -(fSlow18 * F64::max(0.0, if (iTemp635 == 0) as i32 != 0 {0.0} else {if (iTemp635 == 1) as i32 != 0 {fSlow12 * mydsp_faustpower2_f(fSlow7 + fTemp636)} else {fTemp636}})))); - self.fVec30[(self.IOTA0 & 16383) as usize] = fTemp637; - let mut fTemp638: F64 = F64::min(fTemp637, self.fVec30[((i32::wrapping_sub(self.IOTA0, 1)) & 16383) as usize]); - self.fVec31[0] = fTemp638; - let mut fTemp639: F64 = F64::min(fTemp638, self.fVec31[2]); - self.fVec32[0] = fTemp639; - let mut fTemp640: F64 = F64::min(fTemp639, self.fVec32[4]); - self.fVec33[0] = fTemp640; - let mut fTemp641: F64 = F64::min(fTemp640, self.fVec33[8]); - self.fVec34[(self.IOTA0 & 31) as usize] = fTemp641; - let mut fTemp642: F64 = F64::min(fTemp641, self.fVec34[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); - self.fVec35[(self.IOTA0 & 63) as usize] = fTemp642; - let mut fTemp643: F64 = F64::min(fTemp642, self.fVec35[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); - self.fVec36[(self.IOTA0 & 127) as usize] = fTemp643; - let mut fTemp644: F64 = F64::min(fTemp643, self.fVec36[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); - self.fVec37[(self.IOTA0 & 255) as usize] = fTemp644; - let mut fTemp645: F64 = F64::min(fTemp644, self.fVec37[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); - self.fVec38[(self.IOTA0 & 511) as usize] = fTemp645; - let mut fTemp646: F64 = F64::min(fTemp645, self.fVec38[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); - self.fVec39[(self.IOTA0 & 1023) as usize] = fTemp646; - let mut fTemp647: F64 = F64::min(fTemp646, self.fVec39[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); - self.fVec40[(self.IOTA0 & 2047) as usize] = fTemp647; - self.fVec41[(self.IOTA0 & 4095) as usize] = F64::min(fTemp647, self.fVec40[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); - self.fRec17[0] = F64::max(F64::min(self.fRec17[1], self.fVec30[((i32::wrapping_sub(self.IOTA0, iSlow21)) & 16383) as usize]), F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow23 != 0 {fTemp637} else {1.7976931348623157e+308}, if iSlow24 != 0 {self.fVec31[iSlow23 as usize]} else {1.7976931348623157e+308}), if iSlow25 != 0 {self.fVec32[iSlow26 as usize]} else {1.7976931348623157e+308}), if iSlow27 != 0 {self.fVec33[iSlow28 as usize]} else {1.7976931348623157e+308}), if iSlow29 != 0 {self.fVec34[((i32::wrapping_sub(self.IOTA0, iSlow30)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow31 != 0 {self.fVec35[((i32::wrapping_sub(self.IOTA0, iSlow32)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow33 != 0 {self.fVec36[((i32::wrapping_sub(self.IOTA0, iSlow34)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow35 != 0 {self.fVec37[((i32::wrapping_sub(self.IOTA0, iSlow36)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow37 != 0 {self.fVec38[((i32::wrapping_sub(self.IOTA0, iSlow38)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow39 != 0 {self.fVec39[((i32::wrapping_sub(self.IOTA0, iSlow40)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow41 != 0 {self.fVec40[((i32::wrapping_sub(self.IOTA0, iSlow42)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow43 != 0 {self.fVec41[((i32::wrapping_sub(self.IOTA0, iSlow44)) & 4095) as usize]} else {1.7976931348623157e+308})); - let mut fTemp648: F64 = F64::min(self.fRec17[0], self.fRec17[1]); - self.fVec42[0] = fTemp648; - let mut fTemp649: F64 = F64::min(fTemp648, self.fVec42[2]); - self.fVec43[0] = fTemp649; - let mut fTemp650: F64 = F64::min(fTemp649, self.fVec43[4]); - self.fVec44[0] = fTemp650; - let mut fTemp651: F64 = F64::min(fTemp650, self.fVec44[8]); - self.fVec45[(self.IOTA0 & 31) as usize] = fTemp651; - let mut fTemp652: F64 = F64::min(fTemp651, self.fVec45[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); - self.fVec46[(self.IOTA0 & 63) as usize] = fTemp652; - let mut fTemp653: F64 = F64::min(fTemp652, self.fVec46[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); - self.fVec47[(self.IOTA0 & 127) as usize] = fTemp653; - let mut fTemp654: F64 = F64::min(fTemp653, self.fVec47[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); - self.fVec48[(self.IOTA0 & 255) as usize] = fTemp654; - let mut fTemp655: F64 = F64::min(fTemp654, self.fVec48[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); - self.fVec49[(self.IOTA0 & 511) as usize] = fTemp655; - let mut fTemp656: F64 = F64::min(fTemp655, self.fVec49[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); - self.fVec50[(self.IOTA0 & 1023) as usize] = fTemp656; - let mut fTemp657: F64 = F64::min(fTemp656, self.fVec50[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); - self.fVec51[(self.IOTA0 & 2047) as usize] = fTemp657; - self.fVec52[(self.IOTA0 & 4095) as usize] = F64::min(fTemp657, self.fVec51[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); - let mut fTemp658: F64 = F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow4 != 0 {self.fRec17[0]} else {1.7976931348623157e+308}, if iSlow45 != 0 {self.fVec42[iSlow4 as usize]} else {1.7976931348623157e+308}), if iSlow46 != 0 {self.fVec43[iSlow47 as usize]} else {1.7976931348623157e+308}), if iSlow48 != 0 {self.fVec44[iSlow49 as usize]} else {1.7976931348623157e+308}), if iSlow50 != 0 {self.fVec45[((i32::wrapping_sub(self.IOTA0, iSlow51)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow52 != 0 {self.fVec46[((i32::wrapping_sub(self.IOTA0, iSlow53)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow54 != 0 {self.fVec47[((i32::wrapping_sub(self.IOTA0, iSlow55)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow56 != 0 {self.fVec48[((i32::wrapping_sub(self.IOTA0, iSlow57)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow58 != 0 {self.fVec49[((i32::wrapping_sub(self.IOTA0, iSlow59)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow60 != 0 {self.fVec50[((i32::wrapping_sub(self.IOTA0, iSlow61)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow62 != 0 {self.fVec51[((i32::wrapping_sub(self.IOTA0, iSlow63)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow64 != 0 {self.fVec52[((i32::wrapping_sub(self.IOTA0, iSlow65)) & 4095) as usize]} else {1.7976931348623157e+308}) - fTemp633; - self.fVec53[0] = fTemp658; - let mut iTemp659: i32 = (fTemp658 > 0.0) as i32; - let mut fTemp660: F64 = if iTemp659 != 0 {fSlow67} else {fSlow66}; - self.fVec54[0] = fTemp660; - let mut fTemp661: F64 = 2.0 * fTemp660; - let mut iTemp662: i32 = (fTemp661) as i32; - let mut iTemp663: i32 = std::cmp::max(0, std::cmp::min(iTemp662, 2)); - let mut iTemp664: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, 98301), 196607)); - let mut fTemp665: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp664, 3)) as usize] }; - let mut fTemp666: F64 = unsafe { ftbl0mydspSIG0[iTemp664 as usize] }; - let mut fTemp667: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp664, 1)) as usize] } - fTemp666; - let mut fTemp668: F64 = fTemp661 - (iTemp662) as F64; - let mut fTemp669: F64 = fTemp666 + fTemp668 * fTemp667 + 0.5 * (fTemp665 - (fTemp666 + fTemp668 * (fTemp667 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp664, 4)) as usize] } - fTemp665)))); - let mut fTemp670: F64 = if iTemp659 != 0 {fTemp669} else {1.0 - fTemp669}; - let mut iTemp671: i32 = (fTemp658 < 0.0) as i32; - let mut fTemp672: F64 = fSlow1 * (iTemp671) as F64 + fSlow13 * (iTemp659) as F64; - self.fVec55[0] = fTemp672; - let mut fTemp673: F64 = self.fConst10 / fTemp672; - let mut fTemp674: F64 = fTemp673 + 0.5; - let mut fTemp675: F64 = 65535.0 * (1.0 - fTemp674); - let mut iTemp676: i32 = (fTemp675) as i32; - let mut iTemp677: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp676, 65535)))), 196607)); - let mut fTemp678: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp677, 3)) as usize] }; - let mut fTemp679: F64 = unsafe { ftbl0mydspSIG0[iTemp677 as usize] }; - let mut fTemp680: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp677, 1)) as usize] } - fTemp679; - let mut fTemp681: F64 = 65535.0 * fTemp674; - let mut iTemp682: i32 = (fTemp681) as i32; - let mut iTemp683: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp682, 65535)))), 196607)); - let mut fTemp684: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp683, 3), 196607))) as usize] }; - let mut fTemp685: F64 = unsafe { ftbl0mydspSIG0[iTemp683 as usize] }; - let mut fTemp686: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp683, 1), 196607))) as usize] } - fTemp685; - let mut fTemp687: F64 = 2.0 * self.fVec54[1]; - let mut iTemp688: i32 = (fTemp687) as i32; - let mut iTemp689: i32 = std::cmp::max(0, std::cmp::min(iTemp688, 2)); - let mut fTemp690: F64 = 65535.0 * (1.0 - self.fRec15[1]); - let mut iTemp691: i32 = (fTemp690) as i32; - let mut iTemp692: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp691, 65535))), iTemp689), 196607)); - let mut fTemp693: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp692, 3), 196607))) as usize] }; - let mut fTemp694: F64 = unsafe { ftbl0mydspSIG0[iTemp692 as usize] }; - let mut fTemp695: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp692, 1), 196607))) as usize] } - fTemp694; - let mut fTemp696: F64 = fTemp687 - (iTemp688) as F64; - let mut fTemp697: F64 = 65535.0 * self.fRec15[1]; - let mut iTemp698: i32 = (fTemp697) as i32; - let mut iTemp699: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp689, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp698, 65535)))), 196607)); - let mut fTemp700: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp699, 3), 196607))) as usize] }; - let mut fTemp701: F64 = unsafe { ftbl0mydspSIG0[iTemp699 as usize] }; - let mut fTemp702: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp699, 1), 196607))) as usize] } - fTemp701; - let mut fTemp703: F64 = self.fRec15[1] + fTemp673; - let mut fTemp704: F64 = 65535.0 * (1.0 - fTemp703); - let mut iTemp705: i32 = (fTemp704) as i32; - let mut iTemp706: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp705, 65535)))), 196607)); - let mut fTemp707: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp706, 3)) as usize] }; - let mut fTemp708: F64 = unsafe { ftbl0mydspSIG0[iTemp706 as usize] }; - let mut fTemp709: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp706, 1)) as usize] } - fTemp708; - let mut fTemp710: F64 = 65535.0 * fTemp703; - let mut iTemp711: i32 = (fTemp710) as i32; - let mut iTemp712: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp711, 65535)))), 196607)); - let mut fTemp713: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp712, 3), 196607))) as usize] }; - let mut fTemp714: F64 = unsafe { ftbl0mydspSIG0[iTemp712 as usize] }; - let mut fTemp715: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp712, 1), 196607))) as usize] } - fTemp714; - let mut fTemp716: F64 = self.fRec15[1] + self.fConst10 * (1.0 / fTemp672 + 1.0 / self.fVec55[1]); - let mut fTemp717: F64 = 65535.0 * (1.0 - fTemp716); - let mut iTemp718: i32 = (fTemp717) as i32; - let mut iTemp719: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp718, 65535))), iTemp663), 196607)); - let mut fTemp720: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp719, 3)) as usize] }; - let mut fTemp721: F64 = unsafe { ftbl0mydspSIG0[iTemp719 as usize] }; - let mut fTemp722: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp719, 1)) as usize] } - fTemp721; - let mut fTemp723: F64 = 65535.0 * fTemp716; - let mut iTemp724: i32 = (fTemp723) as i32; - let mut iTemp725: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp724, 65535)))), 196607)); - let mut fTemp726: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp725, 3), 196607))) as usize] }; - let mut fTemp727: F64 = unsafe { ftbl0mydspSIG0[iTemp725 as usize] }; - let mut fTemp728: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp725, 1), 196607))) as usize] } - fTemp727; - let mut fTemp729: F64 = (if iTemp659 != 0 {fTemp727 + fTemp668 * fTemp728 + (fTemp723 - (iTemp724) as F64) * (fTemp726 - (fTemp727 + fTemp668 * (fTemp728 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp725, 4), 196607))) as usize] } - fTemp726))))} else {1.0 - (fTemp721 + fTemp668 * fTemp722 + (fTemp717 - (iTemp718) as F64) * (fTemp720 - (fTemp721 + fTemp668 * (fTemp722 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp719, 4)) as usize] } - fTemp720)))))} - if iTemp659 != 0 {fTemp714 + fTemp668 * fTemp715 + (fTemp710 - (iTemp711) as F64) * (fTemp713 - (fTemp714 + fTemp668 * (fTemp715 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp712, 4), 196607))) as usize] } - fTemp713))))} else {1.0 - (fTemp708 + fTemp668 * fTemp709 + (fTemp704 - (iTemp705) as F64) * (fTemp707 - (fTemp708 + fTemp668 * (fTemp709 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp706, 4), 196607))) as usize] } - fTemp707)))))}) * self.fVec53[1] / (fTemp658 * (1.0 - if iTemp659 != 0 {fTemp701 + fTemp696 * fTemp702 + (fTemp697 - (iTemp698) as F64) * (fTemp700 - (fTemp701 + fTemp696 * (fTemp702 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp699, 4), 196607))) as usize] } - fTemp700))))} else {1.0 - (fTemp694 + fTemp696 * fTemp695 + (fTemp690 - (iTemp691) as F64) * (fTemp693 - (fTemp694 + fTemp696 * (fTemp695 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp692, 4), 196607))) as usize] } - fTemp693)))))})); - let mut iTemp730: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp685 + fTemp668 * fTemp686 + (fTemp681 - (iTemp682) as F64) * (fTemp684 - (fTemp685 + fTemp668 * (fTemp686 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp683, 4), 196607))) as usize] } - fTemp684))))} else {1.0 - (fTemp679 + fTemp668 * fTemp680 + (fTemp675 - (iTemp676) as F64) * (fTemp678 - (fTemp679 + fTemp668 * (fTemp680 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp677, 4)) as usize] } - fTemp678)))))} - fTemp670) / (1.0 - fTemp670))) as i32; - let mut fTemp731: F64 = if iTemp730 != 0 {1.0} else {0.5}; - let mut fTemp732: F64 = if iTemp730 != 0 {0.5} else {0.0}; - let mut fTemp733: F64 = fTemp732 + fTemp731; - let mut fTemp734: F64 = 0.5 * fTemp733; - let mut fTemp735: F64 = 65535.0 * (1.0 - fTemp734); - let mut iTemp736: i32 = (fTemp735) as i32; - let mut iTemp737: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp736, 65535)))), 196607)); - let mut fTemp738: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp737, 3)) as usize] }; - let mut fTemp739: F64 = unsafe { ftbl0mydspSIG0[iTemp737 as usize] }; - let mut fTemp740: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp737, 1)) as usize] } - fTemp739; - let mut fTemp741: F64 = 32767.5 * fTemp733; - let mut iTemp742: i32 = (fTemp741) as i32; - let mut iTemp743: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp742, 65535)))), 196607)); - let mut fTemp744: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp743, 3)) as usize] }; - let mut fTemp745: F64 = unsafe { ftbl0mydspSIG0[iTemp743 as usize] }; - let mut fTemp746: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp743, 1)) as usize] } - fTemp745; - let mut fTemp747: F64 = if iTemp659 != 0 {fTemp745 + fTemp668 * fTemp746 + (fTemp741 - (iTemp742) as F64) * (fTemp744 - (fTemp745 + fTemp668 * (fTemp746 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp743, 4)) as usize] } - fTemp744))))} else {1.0 - (fTemp739 + fTemp668 * fTemp740 + (fTemp735 - (iTemp736) as F64) * (fTemp738 - (fTemp739 + fTemp668 * (fTemp740 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp737, 4)) as usize] } - fTemp738)))))}; - let mut fTemp748: F64 = fTemp673 + fTemp734; - let mut fTemp749: F64 = 65535.0 * (1.0 - fTemp748); - let mut iTemp750: i32 = (fTemp749) as i32; - let mut iTemp751: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp750, 65535)))), 196607)); - let mut fTemp752: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp751, 3)) as usize] }; - let mut fTemp753: F64 = unsafe { ftbl0mydspSIG0[iTemp751 as usize] }; - let mut fTemp754: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp751, 1)) as usize] } - fTemp753; - let mut fTemp755: F64 = 65535.0 * fTemp748; - let mut iTemp756: i32 = (fTemp755) as i32; - let mut iTemp757: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp756, 65535)))), 196607)); - let mut fTemp758: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp757, 3), 196607))) as usize] }; - let mut fTemp759: F64 = unsafe { ftbl0mydspSIG0[iTemp757 as usize] }; - let mut fTemp760: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp757, 1), 196607))) as usize] } - fTemp759; - let mut iTemp761: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp759 + fTemp668 * fTemp760 + (fTemp755 - (iTemp756) as F64) * (fTemp758 - (fTemp759 + fTemp668 * (fTemp760 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp757, 4), 196607))) as usize] } - fTemp758))))} else {1.0 - (fTemp753 + fTemp668 * fTemp754 + (fTemp749 - (iTemp750) as F64) * (fTemp752 - (fTemp753 + fTemp668 * (fTemp754 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp751, 4)) as usize] } - fTemp752)))))} - fTemp747) / (1.0 - fTemp747))) as i32; - let mut fTemp762: F64 = if iTemp761 != 0 {fTemp731} else {fTemp734}; - let mut fTemp763: F64 = if iTemp761 != 0 {fTemp734} else {fTemp732}; - let mut fTemp764: F64 = fTemp763 + fTemp762; - let mut fTemp765: F64 = 0.5 * fTemp764; - let mut fTemp766: F64 = 65535.0 * (1.0 - fTemp765); - let mut iTemp767: i32 = (fTemp766) as i32; - let mut iTemp768: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp767, 65535)))), 196607)); - let mut fTemp769: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp768, 3)) as usize] }; - let mut fTemp770: F64 = unsafe { ftbl0mydspSIG0[iTemp768 as usize] }; - let mut fTemp771: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp768, 1)) as usize] } - fTemp770; - let mut fTemp772: F64 = 32767.5 * fTemp764; - let mut iTemp773: i32 = (fTemp772) as i32; - let mut iTemp774: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp773, 65535)))), 196607)); - let mut fTemp775: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp774, 3)) as usize] }; - let mut fTemp776: F64 = unsafe { ftbl0mydspSIG0[iTemp774 as usize] }; - let mut fTemp777: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp774, 1)) as usize] } - fTemp776; - let mut fTemp778: F64 = if iTemp659 != 0 {fTemp776 + fTemp668 * fTemp777 + (fTemp772 - (iTemp773) as F64) * (fTemp775 - (fTemp776 + fTemp668 * (fTemp777 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp774, 4)) as usize] } - fTemp775))))} else {1.0 - (fTemp770 + fTemp668 * fTemp771 + (fTemp766 - (iTemp767) as F64) * (fTemp769 - (fTemp770 + fTemp668 * (fTemp771 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp768, 4)) as usize] } - fTemp769)))))}; - let mut fTemp779: F64 = fTemp673 + fTemp765; - let mut fTemp780: F64 = 65535.0 * (1.0 - fTemp779); - let mut iTemp781: i32 = (fTemp780) as i32; - let mut iTemp782: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp781, 65535)))), 196607)); - let mut fTemp783: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp782, 3)) as usize] }; - let mut fTemp784: F64 = unsafe { ftbl0mydspSIG0[iTemp782 as usize] }; - let mut fTemp785: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp782, 1)) as usize] } - fTemp784; - let mut fTemp786: F64 = 65535.0 * fTemp779; - let mut iTemp787: i32 = (fTemp786) as i32; - let mut iTemp788: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp787, 65535)))), 196607)); - let mut fTemp789: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp788, 3), 196607))) as usize] }; - let mut fTemp790: F64 = unsafe { ftbl0mydspSIG0[iTemp788 as usize] }; - let mut fTemp791: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp788, 1), 196607))) as usize] } - fTemp790; - let mut iTemp792: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp790 + fTemp668 * fTemp791 + (fTemp786 - (iTemp787) as F64) * (fTemp789 - (fTemp790 + fTemp668 * (fTemp791 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp788, 4), 196607))) as usize] } - fTemp789))))} else {1.0 - (fTemp784 + fTemp668 * fTemp785 + (fTemp780 - (iTemp781) as F64) * (fTemp783 - (fTemp784 + fTemp668 * (fTemp785 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp782, 4)) as usize] } - fTemp783)))))} - fTemp778) / (1.0 - fTemp778))) as i32; - let mut fTemp793: F64 = if iTemp792 != 0 {fTemp762} else {fTemp765}; - let mut fTemp794: F64 = if iTemp792 != 0 {fTemp765} else {fTemp763}; - let mut fTemp795: F64 = fTemp794 + fTemp793; - let mut fTemp796: F64 = 0.5 * fTemp795; - let mut fTemp797: F64 = 65535.0 * (1.0 - fTemp796); - let mut iTemp798: i32 = (fTemp797) as i32; - let mut iTemp799: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp798, 65535)))), 196607)); - let mut fTemp800: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp799, 3)) as usize] }; - let mut fTemp801: F64 = unsafe { ftbl0mydspSIG0[iTemp799 as usize] }; - let mut fTemp802: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp799, 1)) as usize] } - fTemp801; - let mut fTemp803: F64 = 32767.5 * fTemp795; - let mut iTemp804: i32 = (fTemp803) as i32; - let mut iTemp805: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp804, 65535)))), 196607)); - let mut fTemp806: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp805, 3)) as usize] }; - let mut fTemp807: F64 = unsafe { ftbl0mydspSIG0[iTemp805 as usize] }; - let mut fTemp808: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp805, 1)) as usize] } - fTemp807; - let mut fTemp809: F64 = if iTemp659 != 0 {fTemp807 + fTemp668 * fTemp808 + (fTemp803 - (iTemp804) as F64) * (fTemp806 - (fTemp807 + fTemp668 * (fTemp808 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp805, 4)) as usize] } - fTemp806))))} else {1.0 - (fTemp801 + fTemp668 * fTemp802 + (fTemp797 - (iTemp798) as F64) * (fTemp800 - (fTemp801 + fTemp668 * (fTemp802 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp799, 4)) as usize] } - fTemp800)))))}; - let mut fTemp810: F64 = fTemp673 + fTemp796; - let mut fTemp811: F64 = 65535.0 * (1.0 - fTemp810); - let mut iTemp812: i32 = (fTemp811) as i32; - let mut iTemp813: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp812, 65535)))), 196607)); - let mut fTemp814: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp813, 3)) as usize] }; - let mut fTemp815: F64 = unsafe { ftbl0mydspSIG0[iTemp813 as usize] }; - let mut fTemp816: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp813, 1)) as usize] } - fTemp815; - let mut fTemp817: F64 = 65535.0 * fTemp810; - let mut iTemp818: i32 = (fTemp817) as i32; - let mut iTemp819: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp818, 65535)))), 196607)); - let mut fTemp820: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp819, 3), 196607))) as usize] }; - let mut fTemp821: F64 = unsafe { ftbl0mydspSIG0[iTemp819 as usize] }; - let mut fTemp822: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp819, 1), 196607))) as usize] } - fTemp821; - let mut iTemp823: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp821 + fTemp668 * fTemp822 + (fTemp817 - (iTemp818) as F64) * (fTemp820 - (fTemp821 + fTemp668 * (fTemp822 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp819, 4), 196607))) as usize] } - fTemp820))))} else {1.0 - (fTemp815 + fTemp668 * fTemp816 + (fTemp811 - (iTemp812) as F64) * (fTemp814 - (fTemp815 + fTemp668 * (fTemp816 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp813, 4)) as usize] } - fTemp814)))))} - fTemp809) / (1.0 - fTemp809))) as i32; - let mut fTemp824: F64 = if iTemp823 != 0 {fTemp793} else {fTemp796}; - let mut fTemp825: F64 = if iTemp823 != 0 {fTemp796} else {fTemp794}; - let mut fTemp826: F64 = fTemp825 + fTemp824; - let mut fTemp827: F64 = 0.5 * fTemp826; - let mut fTemp828: F64 = 65535.0 * (1.0 - fTemp827); - let mut iTemp829: i32 = (fTemp828) as i32; - let mut iTemp830: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp829, 65535)))), 196607)); - let mut fTemp831: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp830, 3)) as usize] }; - let mut fTemp832: F64 = unsafe { ftbl0mydspSIG0[iTemp830 as usize] }; - let mut fTemp833: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp830, 1)) as usize] } - fTemp832; - let mut fTemp834: F64 = 32767.5 * fTemp826; - let mut iTemp835: i32 = (fTemp834) as i32; - let mut iTemp836: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp835, 65535)))), 196607)); - let mut fTemp837: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp836, 3)) as usize] }; - let mut fTemp838: F64 = unsafe { ftbl0mydspSIG0[iTemp836 as usize] }; - let mut fTemp839: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp836, 1)) as usize] } - fTemp838; - let mut fTemp840: F64 = if iTemp659 != 0 {fTemp838 + fTemp668 * fTemp839 + (fTemp834 - (iTemp835) as F64) * (fTemp837 - (fTemp838 + fTemp668 * (fTemp839 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp836, 4)) as usize] } - fTemp837))))} else {1.0 - (fTemp832 + fTemp668 * fTemp833 + (fTemp828 - (iTemp829) as F64) * (fTemp831 - (fTemp832 + fTemp668 * (fTemp833 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp830, 4)) as usize] } - fTemp831)))))}; - let mut fTemp841: F64 = fTemp673 + fTemp827; - let mut fTemp842: F64 = 65535.0 * (1.0 - fTemp841); - let mut iTemp843: i32 = (fTemp842) as i32; - let mut iTemp844: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp843, 65535)))), 196607)); - let mut fTemp845: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp844, 3)) as usize] }; - let mut fTemp846: F64 = unsafe { ftbl0mydspSIG0[iTemp844 as usize] }; - let mut fTemp847: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp844, 1)) as usize] } - fTemp846; - let mut fTemp848: F64 = 65535.0 * fTemp841; - let mut iTemp849: i32 = (fTemp848) as i32; - let mut iTemp850: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp849, 65535)))), 196607)); - let mut fTemp851: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp850, 3), 196607))) as usize] }; - let mut fTemp852: F64 = unsafe { ftbl0mydspSIG0[iTemp850 as usize] }; - let mut fTemp853: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp850, 1), 196607))) as usize] } - fTemp852; - let mut iTemp854: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp852 + fTemp668 * fTemp853 + (fTemp848 - (iTemp849) as F64) * (fTemp851 - (fTemp852 + fTemp668 * (fTemp853 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp850, 4), 196607))) as usize] } - fTemp851))))} else {1.0 - (fTemp846 + fTemp668 * fTemp847 + (fTemp842 - (iTemp843) as F64) * (fTemp845 - (fTemp846 + fTemp668 * (fTemp847 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp844, 4)) as usize] } - fTemp845)))))} - fTemp840) / (1.0 - fTemp840))) as i32; - let mut fTemp855: F64 = if iTemp854 != 0 {fTemp824} else {fTemp827}; - let mut fTemp856: F64 = if iTemp854 != 0 {fTemp827} else {fTemp825}; - let mut fTemp857: F64 = fTemp856 + fTemp855; - let mut fTemp858: F64 = 0.5 * fTemp857; - let mut fTemp859: F64 = 65535.0 * (1.0 - fTemp858); - let mut iTemp860: i32 = (fTemp859) as i32; - let mut iTemp861: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp860, 65535)))), 196607)); - let mut fTemp862: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp861, 3)) as usize] }; - let mut fTemp863: F64 = unsafe { ftbl0mydspSIG0[iTemp861 as usize] }; - let mut fTemp864: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp861, 1)) as usize] } - fTemp863; - let mut fTemp865: F64 = 32767.5 * fTemp857; - let mut iTemp866: i32 = (fTemp865) as i32; - let mut iTemp867: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp866, 65535)))), 196607)); - let mut fTemp868: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp867, 3)) as usize] }; - let mut fTemp869: F64 = unsafe { ftbl0mydspSIG0[iTemp867 as usize] }; - let mut fTemp870: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp867, 1)) as usize] } - fTemp869; - let mut fTemp871: F64 = if iTemp659 != 0 {fTemp869 + fTemp668 * fTemp870 + (fTemp865 - (iTemp866) as F64) * (fTemp868 - (fTemp869 + fTemp668 * (fTemp870 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp867, 4)) as usize] } - fTemp868))))} else {1.0 - (fTemp863 + fTemp668 * fTemp864 + (fTemp859 - (iTemp860) as F64) * (fTemp862 - (fTemp863 + fTemp668 * (fTemp864 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp861, 4)) as usize] } - fTemp862)))))}; - let mut fTemp872: F64 = fTemp673 + fTemp858; - let mut fTemp873: F64 = 65535.0 * (1.0 - fTemp872); - let mut iTemp874: i32 = (fTemp873) as i32; - let mut iTemp875: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp874, 65535)))), 196607)); - let mut fTemp876: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp875, 3)) as usize] }; - let mut fTemp877: F64 = unsafe { ftbl0mydspSIG0[iTemp875 as usize] }; - let mut fTemp878: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp875, 1)) as usize] } - fTemp877; - let mut fTemp879: F64 = 65535.0 * fTemp872; - let mut iTemp880: i32 = (fTemp879) as i32; - let mut iTemp881: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp880, 65535)))), 196607)); - let mut fTemp882: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp881, 3), 196607))) as usize] }; - let mut fTemp883: F64 = unsafe { ftbl0mydspSIG0[iTemp881 as usize] }; - let mut fTemp884: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp881, 1), 196607))) as usize] } - fTemp883; - let mut iTemp885: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp883 + fTemp668 * fTemp884 + (fTemp879 - (iTemp880) as F64) * (fTemp882 - (fTemp883 + fTemp668 * (fTemp884 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp881, 4), 196607))) as usize] } - fTemp882))))} else {1.0 - (fTemp877 + fTemp668 * fTemp878 + (fTemp873 - (iTemp874) as F64) * (fTemp876 - (fTemp877 + fTemp668 * (fTemp878 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp875, 4)) as usize] } - fTemp876)))))} - fTemp871) / (1.0 - fTemp871))) as i32; - let mut fTemp886: F64 = if iTemp885 != 0 {fTemp855} else {fTemp858}; - let mut fTemp887: F64 = if iTemp885 != 0 {fTemp858} else {fTemp856}; - let mut fTemp888: F64 = fTemp887 + fTemp886; - let mut fTemp889: F64 = 0.5 * fTemp888; - let mut fTemp890: F64 = 65535.0 * (1.0 - fTemp889); - let mut iTemp891: i32 = (fTemp890) as i32; - let mut iTemp892: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp891, 65535)))), 196607)); - let mut fTemp893: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp892, 3)) as usize] }; - let mut fTemp894: F64 = unsafe { ftbl0mydspSIG0[iTemp892 as usize] }; - let mut fTemp895: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp892, 1)) as usize] } - fTemp894; - let mut fTemp896: F64 = 32767.5 * fTemp888; - let mut iTemp897: i32 = (fTemp896) as i32; - let mut iTemp898: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp897, 65535)))), 196607)); - let mut fTemp899: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp898, 3)) as usize] }; - let mut fTemp900: F64 = unsafe { ftbl0mydspSIG0[iTemp898 as usize] }; - let mut fTemp901: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp898, 1)) as usize] } - fTemp900; - let mut fTemp902: F64 = if iTemp659 != 0 {fTemp900 + fTemp668 * fTemp901 + (fTemp896 - (iTemp897) as F64) * (fTemp899 - (fTemp900 + fTemp668 * (fTemp901 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp898, 4)) as usize] } - fTemp899))))} else {1.0 - (fTemp894 + fTemp668 * fTemp895 + (fTemp890 - (iTemp891) as F64) * (fTemp893 - (fTemp894 + fTemp668 * (fTemp895 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp892, 4)) as usize] } - fTemp893)))))}; - let mut fTemp903: F64 = fTemp673 + fTemp889; - let mut fTemp904: F64 = 65535.0 * (1.0 - fTemp903); - let mut iTemp905: i32 = (fTemp904) as i32; - let mut iTemp906: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp905, 65535)))), 196607)); - let mut fTemp907: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp906, 3)) as usize] }; - let mut fTemp908: F64 = unsafe { ftbl0mydspSIG0[iTemp906 as usize] }; - let mut fTemp909: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp906, 1)) as usize] } - fTemp908; - let mut fTemp910: F64 = 65535.0 * fTemp903; - let mut iTemp911: i32 = (fTemp910) as i32; - let mut iTemp912: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp911, 65535)))), 196607)); - let mut fTemp913: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp912, 3), 196607))) as usize] }; - let mut fTemp914: F64 = unsafe { ftbl0mydspSIG0[iTemp912 as usize] }; - let mut fTemp915: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp912, 1), 196607))) as usize] } - fTemp914; - let mut iTemp916: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp914 + fTemp668 * fTemp915 + (fTemp910 - (iTemp911) as F64) * (fTemp913 - (fTemp914 + fTemp668 * (fTemp915 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp912, 4), 196607))) as usize] } - fTemp913))))} else {1.0 - (fTemp908 + fTemp668 * fTemp909 + (fTemp904 - (iTemp905) as F64) * (fTemp907 - (fTemp908 + fTemp668 * (fTemp909 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp906, 4)) as usize] } - fTemp907)))))} - fTemp902) / (1.0 - fTemp902))) as i32; - let mut fTemp917: F64 = if iTemp916 != 0 {fTemp886} else {fTemp889}; - let mut fTemp918: F64 = if iTemp916 != 0 {fTemp889} else {fTemp887}; - let mut fTemp919: F64 = fTemp918 + fTemp917; - let mut fTemp920: F64 = 0.5 * fTemp919; - let mut fTemp921: F64 = 65535.0 * (1.0 - fTemp920); - let mut iTemp922: i32 = (fTemp921) as i32; - let mut iTemp923: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp922, 65535)))), 196607)); - let mut fTemp924: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp923, 3)) as usize] }; - let mut fTemp925: F64 = unsafe { ftbl0mydspSIG0[iTemp923 as usize] }; - let mut fTemp926: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp923, 1)) as usize] } - fTemp925; - let mut fTemp927: F64 = 32767.5 * fTemp919; - let mut iTemp928: i32 = (fTemp927) as i32; - let mut iTemp929: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp928, 65535)))), 196607)); - let mut fTemp930: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp929, 3)) as usize] }; - let mut fTemp931: F64 = unsafe { ftbl0mydspSIG0[iTemp929 as usize] }; - let mut fTemp932: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp929, 1)) as usize] } - fTemp931; - let mut fTemp933: F64 = if iTemp659 != 0 {fTemp931 + fTemp668 * fTemp932 + (fTemp927 - (iTemp928) as F64) * (fTemp930 - (fTemp931 + fTemp668 * (fTemp932 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp929, 4)) as usize] } - fTemp930))))} else {1.0 - (fTemp925 + fTemp668 * fTemp926 + (fTemp921 - (iTemp922) as F64) * (fTemp924 - (fTemp925 + fTemp668 * (fTemp926 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp923, 4)) as usize] } - fTemp924)))))}; - let mut fTemp934: F64 = fTemp673 + fTemp920; - let mut fTemp935: F64 = 65535.0 * (1.0 - fTemp934); - let mut iTemp936: i32 = (fTemp935) as i32; - let mut iTemp937: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp936, 65535)))), 196607)); - let mut fTemp938: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp937, 3)) as usize] }; - let mut fTemp939: F64 = unsafe { ftbl0mydspSIG0[iTemp937 as usize] }; - let mut fTemp940: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp937, 1)) as usize] } - fTemp939; - let mut fTemp941: F64 = 65535.0 * fTemp934; - let mut iTemp942: i32 = (fTemp941) as i32; - let mut iTemp943: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp942, 65535)))), 196607)); - let mut fTemp944: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp943, 3), 196607))) as usize] }; - let mut fTemp945: F64 = unsafe { ftbl0mydspSIG0[iTemp943 as usize] }; - let mut fTemp946: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp943, 1), 196607))) as usize] } - fTemp945; - let mut iTemp947: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp945 + fTemp668 * fTemp946 + (fTemp941 - (iTemp942) as F64) * (fTemp944 - (fTemp945 + fTemp668 * (fTemp946 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp943, 4), 196607))) as usize] } - fTemp944))))} else {1.0 - (fTemp939 + fTemp668 * fTemp940 + (fTemp935 - (iTemp936) as F64) * (fTemp938 - (fTemp939 + fTemp668 * (fTemp940 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp937, 4)) as usize] } - fTemp938)))))} - fTemp933) / (1.0 - fTemp933))) as i32; - let mut fTemp948: F64 = if iTemp947 != 0 {fTemp917} else {fTemp920}; - let mut fTemp949: F64 = if iTemp947 != 0 {fTemp920} else {fTemp918}; - let mut fTemp950: F64 = fTemp949 + fTemp948; - let mut fTemp951: F64 = 0.5 * fTemp950; - let mut fTemp952: F64 = 65535.0 * (1.0 - fTemp951); - let mut iTemp953: i32 = (fTemp952) as i32; - let mut iTemp954: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp953, 65535)))), 196607)); - let mut fTemp955: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp954, 3)) as usize] }; - let mut fTemp956: F64 = unsafe { ftbl0mydspSIG0[iTemp954 as usize] }; - let mut fTemp957: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp954, 1)) as usize] } - fTemp956; - let mut fTemp958: F64 = 32767.5 * fTemp950; - let mut iTemp959: i32 = (fTemp958) as i32; - let mut iTemp960: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp959, 65535)))), 196607)); - let mut fTemp961: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp960, 3)) as usize] }; - let mut fTemp962: F64 = unsafe { ftbl0mydspSIG0[iTemp960 as usize] }; - let mut fTemp963: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp960, 1)) as usize] } - fTemp962; - let mut fTemp964: F64 = if iTemp659 != 0 {fTemp962 + fTemp668 * fTemp963 + (fTemp958 - (iTemp959) as F64) * (fTemp961 - (fTemp962 + fTemp668 * (fTemp963 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp960, 4)) as usize] } - fTemp961))))} else {1.0 - (fTemp956 + fTemp668 * fTemp957 + (fTemp952 - (iTemp953) as F64) * (fTemp955 - (fTemp956 + fTemp668 * (fTemp957 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp954, 4)) as usize] } - fTemp955)))))}; - let mut fTemp965: F64 = fTemp673 + fTemp951; - let mut fTemp966: F64 = 65535.0 * (1.0 - fTemp965); - let mut iTemp967: i32 = (fTemp966) as i32; - let mut iTemp968: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp967, 65535)))), 196607)); - let mut fTemp969: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp968, 3)) as usize] }; - let mut fTemp970: F64 = unsafe { ftbl0mydspSIG0[iTemp968 as usize] }; - let mut fTemp971: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp968, 1)) as usize] } - fTemp970; - let mut fTemp972: F64 = 65535.0 * fTemp965; - let mut iTemp973: i32 = (fTemp972) as i32; - let mut iTemp974: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp973, 65535)))), 196607)); - let mut fTemp975: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp974, 3), 196607))) as usize] }; - let mut fTemp976: F64 = unsafe { ftbl0mydspSIG0[iTemp974 as usize] }; - let mut fTemp977: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp974, 1), 196607))) as usize] } - fTemp976; - let mut iTemp978: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp976 + fTemp668 * fTemp977 + (fTemp972 - (iTemp973) as F64) * (fTemp975 - (fTemp976 + fTemp668 * (fTemp977 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp974, 4), 196607))) as usize] } - fTemp975))))} else {1.0 - (fTemp970 + fTemp668 * fTemp971 + (fTemp966 - (iTemp967) as F64) * (fTemp969 - (fTemp970 + fTemp668 * (fTemp971 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp968, 4)) as usize] } - fTemp969)))))} - fTemp964) / (1.0 - fTemp964))) as i32; - let mut fTemp979: F64 = if iTemp978 != 0 {fTemp948} else {fTemp951}; - let mut fTemp980: F64 = if iTemp978 != 0 {fTemp951} else {fTemp949}; - let mut fTemp981: F64 = fTemp980 + fTemp979; - let mut fTemp982: F64 = 0.5 * fTemp981; - let mut fTemp983: F64 = 65535.0 * (1.0 - fTemp982); - let mut iTemp984: i32 = (fTemp983) as i32; - let mut iTemp985: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp984, 65535)))), 196607)); - let mut fTemp986: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp985, 3)) as usize] }; - let mut fTemp987: F64 = unsafe { ftbl0mydspSIG0[iTemp985 as usize] }; - let mut fTemp988: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp985, 1)) as usize] } - fTemp987; - let mut fTemp989: F64 = 32767.5 * fTemp981; - let mut iTemp990: i32 = (fTemp989) as i32; - let mut iTemp991: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp990, 65535)))), 196607)); - let mut fTemp992: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp991, 3)) as usize] }; - let mut fTemp993: F64 = unsafe { ftbl0mydspSIG0[iTemp991 as usize] }; - let mut fTemp994: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp991, 1)) as usize] } - fTemp993; - let mut fTemp995: F64 = if iTemp659 != 0 {fTemp993 + fTemp668 * fTemp994 + (fTemp989 - (iTemp990) as F64) * (fTemp992 - (fTemp993 + fTemp668 * (fTemp994 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp991, 4)) as usize] } - fTemp992))))} else {1.0 - (fTemp987 + fTemp668 * fTemp988 + (fTemp983 - (iTemp984) as F64) * (fTemp986 - (fTemp987 + fTemp668 * (fTemp988 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp985, 4)) as usize] } - fTemp986)))))}; - let mut fTemp996: F64 = fTemp673 + fTemp982; - let mut fTemp997: F64 = 65535.0 * (1.0 - fTemp996); - let mut iTemp998: i32 = (fTemp997) as i32; - let mut iTemp999: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp998, 65535)))), 196607)); - let mut fTemp1000: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp999, 3)) as usize] }; - let mut fTemp1001: F64 = unsafe { ftbl0mydspSIG0[iTemp999 as usize] }; - let mut fTemp1002: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp999, 1)) as usize] } - fTemp1001; - let mut fTemp1003: F64 = 65535.0 * fTemp996; - let mut iTemp1004: i32 = (fTemp1003) as i32; - let mut iTemp1005: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1004, 65535)))), 196607)); - let mut fTemp1006: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1005, 3), 196607))) as usize] }; - let mut fTemp1007: F64 = unsafe { ftbl0mydspSIG0[iTemp1005 as usize] }; - let mut fTemp1008: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1005, 1), 196607))) as usize] } - fTemp1007; - let mut iTemp1009: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1007 + fTemp668 * fTemp1008 + (fTemp1003 - (iTemp1004) as F64) * (fTemp1006 - (fTemp1007 + fTemp668 * (fTemp1008 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1005, 4), 196607))) as usize] } - fTemp1006))))} else {1.0 - (fTemp1001 + fTemp668 * fTemp1002 + (fTemp997 - (iTemp998) as F64) * (fTemp1000 - (fTemp1001 + fTemp668 * (fTemp1002 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp999, 4)) as usize] } - fTemp1000)))))} - fTemp995) / (1.0 - fTemp995))) as i32; - let mut fTemp1010: F64 = if iTemp1009 != 0 {fTemp979} else {fTemp982}; - let mut fTemp1011: F64 = if iTemp1009 != 0 {fTemp982} else {fTemp980}; - let mut fTemp1012: F64 = fTemp1011 + fTemp1010; - let mut fTemp1013: F64 = 0.5 * fTemp1012; - let mut fTemp1014: F64 = 65535.0 * (1.0 - fTemp1013); - let mut iTemp1015: i32 = (fTemp1014) as i32; - let mut iTemp1016: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1015, 65535)))), 196607)); - let mut fTemp1017: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1016, 3)) as usize] }; - let mut fTemp1018: F64 = unsafe { ftbl0mydspSIG0[iTemp1016 as usize] }; - let mut fTemp1019: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1016, 1)) as usize] } - fTemp1018; - let mut fTemp1020: F64 = 32767.5 * fTemp1012; - let mut iTemp1021: i32 = (fTemp1020) as i32; - let mut iTemp1022: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1021, 65535)))), 196607)); - let mut fTemp1023: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1022, 3)) as usize] }; - let mut fTemp1024: F64 = unsafe { ftbl0mydspSIG0[iTemp1022 as usize] }; - let mut fTemp1025: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1022, 1)) as usize] } - fTemp1024; - let mut fTemp1026: F64 = if iTemp659 != 0 {fTemp1024 + fTemp668 * fTemp1025 + (fTemp1020 - (iTemp1021) as F64) * (fTemp1023 - (fTemp1024 + fTemp668 * (fTemp1025 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1022, 4)) as usize] } - fTemp1023))))} else {1.0 - (fTemp1018 + fTemp668 * fTemp1019 + (fTemp1014 - (iTemp1015) as F64) * (fTemp1017 - (fTemp1018 + fTemp668 * (fTemp1019 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1016, 4)) as usize] } - fTemp1017)))))}; - let mut fTemp1027: F64 = fTemp673 + fTemp1013; - let mut fTemp1028: F64 = 65535.0 * (1.0 - fTemp1027); - let mut iTemp1029: i32 = (fTemp1028) as i32; - let mut iTemp1030: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1029, 65535)))), 196607)); - let mut fTemp1031: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1030, 3)) as usize] }; - let mut fTemp1032: F64 = unsafe { ftbl0mydspSIG0[iTemp1030 as usize] }; - let mut fTemp1033: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1030, 1)) as usize] } - fTemp1032; - let mut fTemp1034: F64 = 65535.0 * fTemp1027; - let mut iTemp1035: i32 = (fTemp1034) as i32; - let mut iTemp1036: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1035, 65535)))), 196607)); - let mut fTemp1037: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1036, 3), 196607))) as usize] }; - let mut fTemp1038: F64 = unsafe { ftbl0mydspSIG0[iTemp1036 as usize] }; - let mut fTemp1039: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1036, 1), 196607))) as usize] } - fTemp1038; - let mut iTemp1040: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1038 + fTemp668 * fTemp1039 + (fTemp1034 - (iTemp1035) as F64) * (fTemp1037 - (fTemp1038 + fTemp668 * (fTemp1039 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1036, 4), 196607))) as usize] } - fTemp1037))))} else {1.0 - (fTemp1032 + fTemp668 * fTemp1033 + (fTemp1028 - (iTemp1029) as F64) * (fTemp1031 - (fTemp1032 + fTemp668 * (fTemp1033 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1030, 4)) as usize] } - fTemp1031)))))} - fTemp1026) / (1.0 - fTemp1026))) as i32; - let mut fTemp1041: F64 = if iTemp1040 != 0 {fTemp1010} else {fTemp1013}; - let mut fTemp1042: F64 = if iTemp1040 != 0 {fTemp1013} else {fTemp1011}; - let mut fTemp1043: F64 = fTemp1042 + fTemp1041; - let mut fTemp1044: F64 = 0.5 * fTemp1043; - let mut fTemp1045: F64 = 65535.0 * (1.0 - fTemp1044); - let mut iTemp1046: i32 = (fTemp1045) as i32; - let mut iTemp1047: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1046, 65535)))), 196607)); - let mut fTemp1048: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1047, 3)) as usize] }; - let mut fTemp1049: F64 = unsafe { ftbl0mydspSIG0[iTemp1047 as usize] }; - let mut fTemp1050: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1047, 1)) as usize] } - fTemp1049; - let mut fTemp1051: F64 = 32767.5 * fTemp1043; - let mut iTemp1052: i32 = (fTemp1051) as i32; - let mut iTemp1053: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1052, 65535)))), 196607)); - let mut fTemp1054: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1053, 3)) as usize] }; - let mut fTemp1055: F64 = unsafe { ftbl0mydspSIG0[iTemp1053 as usize] }; - let mut fTemp1056: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1053, 1)) as usize] } - fTemp1055; - let mut fTemp1057: F64 = if iTemp659 != 0 {fTemp1055 + fTemp668 * fTemp1056 + (fTemp1051 - (iTemp1052) as F64) * (fTemp1054 - (fTemp1055 + fTemp668 * (fTemp1056 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1053, 4)) as usize] } - fTemp1054))))} else {1.0 - (fTemp1049 + fTemp668 * fTemp1050 + (fTemp1045 - (iTemp1046) as F64) * (fTemp1048 - (fTemp1049 + fTemp668 * (fTemp1050 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1047, 4)) as usize] } - fTemp1048)))))}; - let mut fTemp1058: F64 = fTemp673 + fTemp1044; - let mut fTemp1059: F64 = 65535.0 * (1.0 - fTemp1058); - let mut iTemp1060: i32 = (fTemp1059) as i32; - let mut iTemp1061: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1060, 65535)))), 196607)); - let mut fTemp1062: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1061, 3)) as usize] }; - let mut fTemp1063: F64 = unsafe { ftbl0mydspSIG0[iTemp1061 as usize] }; - let mut fTemp1064: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1061, 1)) as usize] } - fTemp1063; - let mut fTemp1065: F64 = 65535.0 * fTemp1058; - let mut iTemp1066: i32 = (fTemp1065) as i32; - let mut iTemp1067: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1066, 65535)))), 196607)); - let mut fTemp1068: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1067, 3), 196607))) as usize] }; - let mut fTemp1069: F64 = unsafe { ftbl0mydspSIG0[iTemp1067 as usize] }; - let mut fTemp1070: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1067, 1), 196607))) as usize] } - fTemp1069; - let mut iTemp1071: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1069 + fTemp668 * fTemp1070 + (fTemp1065 - (iTemp1066) as F64) * (fTemp1068 - (fTemp1069 + fTemp668 * (fTemp1070 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1067, 4), 196607))) as usize] } - fTemp1068))))} else {1.0 - (fTemp1063 + fTemp668 * fTemp1064 + (fTemp1059 - (iTemp1060) as F64) * (fTemp1062 - (fTemp1063 + fTemp668 * (fTemp1064 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1061, 4)) as usize] } - fTemp1062)))))} - fTemp1057) / (1.0 - fTemp1057))) as i32; - let mut fTemp1072: F64 = if iTemp1071 != 0 {fTemp1041} else {fTemp1044}; - let mut fTemp1073: F64 = if iTemp1071 != 0 {fTemp1044} else {fTemp1042}; - let mut fTemp1074: F64 = fTemp1073 + fTemp1072; - let mut fTemp1075: F64 = 0.5 * fTemp1074; - let mut fTemp1076: F64 = 65535.0 * (1.0 - fTemp1075); - let mut iTemp1077: i32 = (fTemp1076) as i32; - let mut iTemp1078: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1077, 65535)))), 196607)); - let mut fTemp1079: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1078, 3)) as usize] }; - let mut fTemp1080: F64 = unsafe { ftbl0mydspSIG0[iTemp1078 as usize] }; - let mut fTemp1081: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1078, 1)) as usize] } - fTemp1080; - let mut fTemp1082: F64 = 32767.5 * fTemp1074; - let mut iTemp1083: i32 = (fTemp1082) as i32; - let mut iTemp1084: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1083, 65535)))), 196607)); - let mut fTemp1085: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1084, 3)) as usize] }; - let mut fTemp1086: F64 = unsafe { ftbl0mydspSIG0[iTemp1084 as usize] }; - let mut fTemp1087: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1084, 1)) as usize] } - fTemp1086; - let mut fTemp1088: F64 = if iTemp659 != 0 {fTemp1086 + fTemp668 * fTemp1087 + (fTemp1082 - (iTemp1083) as F64) * (fTemp1085 - (fTemp1086 + fTemp668 * (fTemp1087 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1084, 4)) as usize] } - fTemp1085))))} else {1.0 - (fTemp1080 + fTemp668 * fTemp1081 + (fTemp1076 - (iTemp1077) as F64) * (fTemp1079 - (fTemp1080 + fTemp668 * (fTemp1081 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1078, 4)) as usize] } - fTemp1079)))))}; - let mut fTemp1089: F64 = fTemp673 + fTemp1075; - let mut fTemp1090: F64 = 65535.0 * (1.0 - fTemp1089); - let mut iTemp1091: i32 = (fTemp1090) as i32; - let mut iTemp1092: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1091, 65535)))), 196607)); - let mut fTemp1093: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1092, 3)) as usize] }; - let mut fTemp1094: F64 = unsafe { ftbl0mydspSIG0[iTemp1092 as usize] }; - let mut fTemp1095: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1092, 1)) as usize] } - fTemp1094; - let mut fTemp1096: F64 = 65535.0 * fTemp1089; - let mut iTemp1097: i32 = (fTemp1096) as i32; - let mut iTemp1098: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1097, 65535)))), 196607)); - let mut fTemp1099: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1098, 3), 196607))) as usize] }; - let mut fTemp1100: F64 = unsafe { ftbl0mydspSIG0[iTemp1098 as usize] }; - let mut fTemp1101: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1098, 1), 196607))) as usize] } - fTemp1100; - let mut iTemp1102: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1100 + fTemp668 * fTemp1101 + (fTemp1096 - (iTemp1097) as F64) * (fTemp1099 - (fTemp1100 + fTemp668 * (fTemp1101 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1098, 4), 196607))) as usize] } - fTemp1099))))} else {1.0 - (fTemp1094 + fTemp668 * fTemp1095 + (fTemp1090 - (iTemp1091) as F64) * (fTemp1093 - (fTemp1094 + fTemp668 * (fTemp1095 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1092, 4)) as usize] } - fTemp1093)))))} - fTemp1088) / (1.0 - fTemp1088))) as i32; - let mut fTemp1103: F64 = if iTemp1102 != 0 {fTemp1072} else {fTemp1075}; - let mut fTemp1104: F64 = if iTemp1102 != 0 {fTemp1075} else {fTemp1073}; - let mut fTemp1105: F64 = fTemp1104 + fTemp1103; - let mut fTemp1106: F64 = 0.5 * fTemp1105; - let mut fTemp1107: F64 = 65535.0 * (1.0 - fTemp1106); - let mut iTemp1108: i32 = (fTemp1107) as i32; - let mut iTemp1109: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1108, 65535)))), 196607)); - let mut fTemp1110: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1109, 3)) as usize] }; - let mut fTemp1111: F64 = unsafe { ftbl0mydspSIG0[iTemp1109 as usize] }; - let mut fTemp1112: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1109, 1)) as usize] } - fTemp1111; - let mut fTemp1113: F64 = 32767.5 * fTemp1105; - let mut iTemp1114: i32 = (fTemp1113) as i32; - let mut iTemp1115: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1114, 65535)))), 196607)); - let mut fTemp1116: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1115, 3)) as usize] }; - let mut fTemp1117: F64 = unsafe { ftbl0mydspSIG0[iTemp1115 as usize] }; - let mut fTemp1118: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1115, 1)) as usize] } - fTemp1117; - let mut fTemp1119: F64 = if iTemp659 != 0 {fTemp1117 + fTemp668 * fTemp1118 + (fTemp1113 - (iTemp1114) as F64) * (fTemp1116 - (fTemp1117 + fTemp668 * (fTemp1118 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1115, 4)) as usize] } - fTemp1116))))} else {1.0 - (fTemp1111 + fTemp668 * fTemp1112 + (fTemp1107 - (iTemp1108) as F64) * (fTemp1110 - (fTemp1111 + fTemp668 * (fTemp1112 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1109, 4)) as usize] } - fTemp1110)))))}; - let mut fTemp1120: F64 = fTemp673 + fTemp1106; - let mut fTemp1121: F64 = 65535.0 * (1.0 - fTemp1120); - let mut iTemp1122: i32 = (fTemp1121) as i32; - let mut iTemp1123: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1122, 65535)))), 196607)); - let mut fTemp1124: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1123, 3)) as usize] }; - let mut fTemp1125: F64 = unsafe { ftbl0mydspSIG0[iTemp1123 as usize] }; - let mut fTemp1126: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1123, 1)) as usize] } - fTemp1125; - let mut fTemp1127: F64 = 65535.0 * fTemp1120; - let mut iTemp1128: i32 = (fTemp1127) as i32; - let mut iTemp1129: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1128, 65535)))), 196607)); - let mut fTemp1130: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1129, 3), 196607))) as usize] }; - let mut fTemp1131: F64 = unsafe { ftbl0mydspSIG0[iTemp1129 as usize] }; - let mut fTemp1132: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1129, 1), 196607))) as usize] } - fTemp1131; - let mut iTemp1133: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1131 + fTemp668 * fTemp1132 + (fTemp1127 - (iTemp1128) as F64) * (fTemp1130 - (fTemp1131 + fTemp668 * (fTemp1132 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1129, 4), 196607))) as usize] } - fTemp1130))))} else {1.0 - (fTemp1125 + fTemp668 * fTemp1126 + (fTemp1121 - (iTemp1122) as F64) * (fTemp1124 - (fTemp1125 + fTemp668 * (fTemp1126 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1123, 4)) as usize] } - fTemp1124)))))} - fTemp1119) / (1.0 - fTemp1119))) as i32; - let mut fTemp1134: F64 = if iTemp1133 != 0 {fTemp1103} else {fTemp1106}; - let mut fTemp1135: F64 = if iTemp1133 != 0 {fTemp1106} else {fTemp1104}; - let mut fTemp1136: F64 = fTemp1135 + fTemp1134; - let mut fTemp1137: F64 = 0.5 * fTemp1136; - let mut fTemp1138: F64 = 65535.0 * (1.0 - fTemp1137); - let mut iTemp1139: i32 = (fTemp1138) as i32; - let mut iTemp1140: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1139, 65535)))), 196607)); - let mut fTemp1141: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1140, 3)) as usize] }; - let mut fTemp1142: F64 = unsafe { ftbl0mydspSIG0[iTemp1140 as usize] }; - let mut fTemp1143: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1140, 1)) as usize] } - fTemp1142; - let mut fTemp1144: F64 = 32767.5 * fTemp1136; - let mut iTemp1145: i32 = (fTemp1144) as i32; - let mut iTemp1146: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1145, 65535)))), 196607)); - let mut fTemp1147: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1146, 3)) as usize] }; - let mut fTemp1148: F64 = unsafe { ftbl0mydspSIG0[iTemp1146 as usize] }; - let mut fTemp1149: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1146, 1)) as usize] } - fTemp1148; - let mut fTemp1150: F64 = if iTemp659 != 0 {fTemp1148 + fTemp668 * fTemp1149 + (fTemp1144 - (iTemp1145) as F64) * (fTemp1147 - (fTemp1148 + fTemp668 * (fTemp1149 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1146, 4)) as usize] } - fTemp1147))))} else {1.0 - (fTemp1142 + fTemp668 * fTemp1143 + (fTemp1138 - (iTemp1139) as F64) * (fTemp1141 - (fTemp1142 + fTemp668 * (fTemp1143 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1140, 4)) as usize] } - fTemp1141)))))}; - let mut fTemp1151: F64 = fTemp673 + fTemp1137; - let mut fTemp1152: F64 = 65535.0 * (1.0 - fTemp1151); - let mut iTemp1153: i32 = (fTemp1152) as i32; - let mut iTemp1154: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1153, 65535)))), 196607)); - let mut fTemp1155: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1154, 3)) as usize] }; - let mut fTemp1156: F64 = unsafe { ftbl0mydspSIG0[iTemp1154 as usize] }; - let mut fTemp1157: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1154, 1)) as usize] } - fTemp1156; - let mut fTemp1158: F64 = 65535.0 * fTemp1151; - let mut iTemp1159: i32 = (fTemp1158) as i32; - let mut iTemp1160: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1159, 65535)))), 196607)); - let mut fTemp1161: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1160, 3), 196607))) as usize] }; - let mut fTemp1162: F64 = unsafe { ftbl0mydspSIG0[iTemp1160 as usize] }; - let mut fTemp1163: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1160, 1), 196607))) as usize] } - fTemp1162; - let mut iTemp1164: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1162 + fTemp668 * fTemp1163 + (fTemp1158 - (iTemp1159) as F64) * (fTemp1161 - (fTemp1162 + fTemp668 * (fTemp1163 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1160, 4), 196607))) as usize] } - fTemp1161))))} else {1.0 - (fTemp1156 + fTemp668 * fTemp1157 + (fTemp1152 - (iTemp1153) as F64) * (fTemp1155 - (fTemp1156 + fTemp668 * (fTemp1157 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1154, 4)) as usize] } - fTemp1155)))))} - fTemp1150) / (1.0 - fTemp1150))) as i32; - let mut fTemp1165: F64 = if iTemp1164 != 0 {fTemp1134} else {fTemp1137}; - let mut fTemp1166: F64 = if iTemp1164 != 0 {fTemp1137} else {fTemp1135}; - let mut fTemp1167: F64 = fTemp1166 + fTemp1165; - let mut fTemp1168: F64 = 0.5 * fTemp1167; - let mut fTemp1169: F64 = 65535.0 * (1.0 - fTemp1168); - let mut iTemp1170: i32 = (fTemp1169) as i32; - let mut iTemp1171: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1170, 65535)))), 196607)); - let mut fTemp1172: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1171, 3)) as usize] }; - let mut fTemp1173: F64 = unsafe { ftbl0mydspSIG0[iTemp1171 as usize] }; - let mut fTemp1174: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1171, 1)) as usize] } - fTemp1173; - let mut fTemp1175: F64 = 32767.5 * fTemp1167; - let mut iTemp1176: i32 = (fTemp1175) as i32; - let mut iTemp1177: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1176, 65535)))), 196607)); - let mut fTemp1178: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1177, 3)) as usize] }; - let mut fTemp1179: F64 = unsafe { ftbl0mydspSIG0[iTemp1177 as usize] }; - let mut fTemp1180: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1177, 1)) as usize] } - fTemp1179; - let mut fTemp1181: F64 = if iTemp659 != 0 {fTemp1179 + fTemp668 * fTemp1180 + (fTemp1175 - (iTemp1176) as F64) * (fTemp1178 - (fTemp1179 + fTemp668 * (fTemp1180 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1177, 4), 196607))) as usize] } - fTemp1178))))} else {1.0 - (fTemp1173 + fTemp668 * fTemp1174 + (fTemp1169 - (iTemp1170) as F64) * (fTemp1172 - (fTemp1173 + fTemp668 * (fTemp1174 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1171, 4), 196607))) as usize] } - fTemp1172)))))}; - let mut fTemp1182: F64 = fTemp673 + fTemp1168; - let mut fTemp1183: F64 = 65535.0 * (1.0 - fTemp1182); - let mut iTemp1184: i32 = (fTemp1183) as i32; - let mut iTemp1185: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1184, 65535)))), 196607)); - let mut fTemp1186: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1185, 3)) as usize] }; - let mut fTemp1187: F64 = unsafe { ftbl0mydspSIG0[iTemp1185 as usize] }; - let mut fTemp1188: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1185, 1)) as usize] } - fTemp1187; - let mut fTemp1189: F64 = 65535.0 * fTemp1182; - let mut iTemp1190: i32 = (fTemp1189) as i32; - let mut iTemp1191: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1190, 65535)))), 196607)); - let mut fTemp1192: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1191, 3), 196607))) as usize] }; - let mut fTemp1193: F64 = unsafe { ftbl0mydspSIG0[iTemp1191 as usize] }; - let mut fTemp1194: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1191, 1), 196607))) as usize] } - fTemp1193; - let mut iTemp1195: i32 = (fTemp729 > ((if iTemp659 != 0 {fTemp1193 + fTemp668 * fTemp1194 + (fTemp1189 - (iTemp1190) as F64) * (fTemp1192 - (fTemp1193 + fTemp668 * (fTemp1194 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1191, 4), 196607))) as usize] } - fTemp1192))))} else {1.0 - (fTemp1187 + fTemp668 * fTemp1188 + (fTemp1183 - (iTemp1184) as F64) * (fTemp1186 - (fTemp1187 + fTemp668 * (fTemp1188 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1185, 4)) as usize] } - fTemp1186)))))} - fTemp1181) / (1.0 - fTemp1181))) as i32; - let mut fTemp1196: F64 = F64::min(1.0, F64::max(0.0, 0.5 * (if iTemp1195 != 0 {fTemp1168} else {fTemp1166} + if iTemp1195 != 0 {fTemp1165} else {fTemp1168}))); - self.fRec15[0] = fTemp1196; - let mut fTemp1197: F64 = 65535.0 * (1.0 - fTemp1196); - let mut iTemp1198: i32 = (fTemp1197) as i32; - let mut iTemp1199: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1198, 65535)))), 196607)); - let mut fTemp1200: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1199, 3)) as usize] }; - let mut fTemp1201: F64 = unsafe { ftbl0mydspSIG0[iTemp1199 as usize] }; - let mut fTemp1202: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1199, 1)) as usize] } - fTemp1201; - let mut fTemp1203: F64 = 65535.0 * fTemp1196; - let mut iTemp1204: i32 = (fTemp1203) as i32; - let mut iTemp1205: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1204, 65535)))), 196607)); - let mut fTemp1206: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1205, 3)) as usize] }; - let mut fTemp1207: F64 = unsafe { ftbl0mydspSIG0[iTemp1205 as usize] }; - let mut fTemp1208: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1205, 1)) as usize] } - fTemp1207; - let mut fTemp1209: F64 = if iTemp659 != 0 {fTemp1207 + fTemp668 * fTemp1208 + (fTemp1203 - (iTemp1204) as F64) * (fTemp1206 - (fTemp1207 + fTemp668 * (fTemp1208 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1205, 4), 196607))) as usize] } - fTemp1206))))} else {1.0 - (fTemp1201 + fTemp668 * fTemp1202 + (fTemp1197 - (iTemp1198) as F64) * (fTemp1200 - (fTemp1201 + fTemp668 * (fTemp1202 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1199, 4), 196607))) as usize] } - fTemp1200)))))}; - let mut fTemp1210: F64 = fTemp673 + fTemp1196; - let mut fTemp1211: F64 = 65535.0 * (1.0 - fTemp1210); - let mut iTemp1212: i32 = (fTemp1211) as i32; - let mut iTemp1213: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1212, 65535)))), 196607)); - let mut fTemp1214: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1213, 3)) as usize] }; - let mut fTemp1215: F64 = unsafe { ftbl0mydspSIG0[iTemp1213 as usize] }; - let mut fTemp1216: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1213, 1)) as usize] } - fTemp1215; - let mut fTemp1217: F64 = 65535.0 * fTemp1210; - let mut iTemp1218: i32 = (fTemp1217) as i32; - let mut iTemp1219: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp663, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1218, 65535)))), 196607)); - let mut fTemp1220: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1219, 3), 196607))) as usize] }; - let mut fTemp1221: F64 = unsafe { ftbl0mydspSIG0[iTemp1219 as usize] }; - let mut fTemp1222: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1219, 1), 196607))) as usize] } - fTemp1221; - let mut fTemp1223: F64 = fTemp633 + if ((0.001 * fTemp672) == 0.0) as i32 != 0 {fTemp658} else {fTemp658 * (if iTemp659 != 0 {fTemp1221 + fTemp668 * fTemp1222 + (fTemp1217 - (iTemp1218) as F64) * (fTemp1220 - (fTemp1221 + fTemp668 * (fTemp1222 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1219, 4), 196607))) as usize] } - fTemp1220))))} else {1.0 - (fTemp1215 + fTemp668 * fTemp1216 + (fTemp1211 - (iTemp1212) as F64) * (fTemp1214 - (fTemp1215 + fTemp668 * (fTemp1216 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1213, 4)) as usize] } - fTemp1214)))))} - fTemp1209) / (1.0 - fTemp1209)}; - self.fRec16[(self.IOTA0 & 8191) as usize] = if iTemp671 != 0 {F64::min(fTemp1223, fTemp633)} else {F64::max(fTemp1223, fTemp633)}; - let mut fTemp1224: F64 = self.fRec16[((i32::wrapping_sub(self.IOTA0, iSlow70)) & 8191) as usize]; - self.fHbargraph2 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp1224)); - *output1 = 0.5 * fTemp2 * self.fVec2[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] + self.fRec14[0] * fTemp3 * self.fVec3[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] * fTemp1224; + *output0 = 0.5 * self.fVec0[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] * fTemp2 + self.fRec14[0] * self.fVec1[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] * fTemp633 * fTemp4; + let mut fTemp634: F64 = self.fRec16[((i32::wrapping_sub(self.IOTA0, 1)) & 8191) as usize]; + let mut fTemp635: F64 = fTemp36 + fSlow17 * (fTemp37 - fTemp36); + let mut iTemp636: i32 = ((fTemp635 > fSlow11) as i32) + ((fTemp635 > fSlow9) as i32); + let mut fTemp637: F64 = fTemp635 - fSlow8; + let mut fTemp638: F64 = F64::min(fTemp34, F64::powf(1e+01, -(fSlow18 * F64::max(0.0, if (iTemp636 == 0) as i32 != 0 {0.0} else {if (iTemp636 == 1) as i32 != 0 {fSlow12 * mydsp_faustpower2_f(fSlow7 + fTemp637)} else {fTemp637}})))); + self.fVec30[(self.IOTA0 & 16383) as usize] = fTemp638; + let mut fTemp639: F64 = F64::min(fTemp638, self.fVec30[((i32::wrapping_sub(self.IOTA0, 1)) & 16383) as usize]); + self.fVec31[0] = fTemp639; + let mut fTemp640: F64 = F64::min(fTemp639, self.fVec31[2]); + self.fVec32[0] = fTemp640; + let mut fTemp641: F64 = F64::min(fTemp640, self.fVec32[4]); + self.fVec33[0] = fTemp641; + let mut fTemp642: F64 = F64::min(fTemp641, self.fVec33[8]); + self.fVec34[(self.IOTA0 & 31) as usize] = fTemp642; + let mut fTemp643: F64 = F64::min(fTemp642, self.fVec34[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); + self.fVec35[(self.IOTA0 & 63) as usize] = fTemp643; + let mut fTemp644: F64 = F64::min(fTemp643, self.fVec35[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); + self.fVec36[(self.IOTA0 & 127) as usize] = fTemp644; + let mut fTemp645: F64 = F64::min(fTemp644, self.fVec36[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); + self.fVec37[(self.IOTA0 & 255) as usize] = fTemp645; + let mut fTemp646: F64 = F64::min(fTemp645, self.fVec37[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); + self.fVec38[(self.IOTA0 & 511) as usize] = fTemp646; + let mut fTemp647: F64 = F64::min(fTemp646, self.fVec38[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); + self.fVec39[(self.IOTA0 & 1023) as usize] = fTemp647; + let mut fTemp648: F64 = F64::min(fTemp647, self.fVec39[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); + self.fVec40[(self.IOTA0 & 2047) as usize] = fTemp648; + self.fVec41[(self.IOTA0 & 4095) as usize] = F64::min(fTemp648, self.fVec40[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); + self.fRec17[0] = F64::max(F64::min(self.fRec17[1], self.fVec30[((i32::wrapping_sub(self.IOTA0, iSlow21)) & 16383) as usize]), F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow23 != 0 {fTemp638} else {1.7976931348623157e+308}, if iSlow24 != 0 {self.fVec31[iSlow23 as usize]} else {1.7976931348623157e+308}), if iSlow25 != 0 {self.fVec32[iSlow26 as usize]} else {1.7976931348623157e+308}), if iSlow27 != 0 {self.fVec33[iSlow28 as usize]} else {1.7976931348623157e+308}), if iSlow29 != 0 {self.fVec34[((i32::wrapping_sub(self.IOTA0, iSlow30)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow31 != 0 {self.fVec35[((i32::wrapping_sub(self.IOTA0, iSlow32)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow33 != 0 {self.fVec36[((i32::wrapping_sub(self.IOTA0, iSlow34)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow35 != 0 {self.fVec37[((i32::wrapping_sub(self.IOTA0, iSlow36)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow37 != 0 {self.fVec38[((i32::wrapping_sub(self.IOTA0, iSlow38)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow39 != 0 {self.fVec39[((i32::wrapping_sub(self.IOTA0, iSlow40)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow41 != 0 {self.fVec40[((i32::wrapping_sub(self.IOTA0, iSlow42)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow43 != 0 {self.fVec41[((i32::wrapping_sub(self.IOTA0, iSlow44)) & 4095) as usize]} else {1.7976931348623157e+308})); + let mut fTemp649: F64 = F64::min(self.fRec17[0], self.fRec17[1]); + self.fVec42[0] = fTemp649; + let mut fTemp650: F64 = F64::min(fTemp649, self.fVec42[2]); + self.fVec43[0] = fTemp650; + let mut fTemp651: F64 = F64::min(fTemp650, self.fVec43[4]); + self.fVec44[0] = fTemp651; + let mut fTemp652: F64 = F64::min(fTemp651, self.fVec44[8]); + self.fVec45[(self.IOTA0 & 31) as usize] = fTemp652; + let mut fTemp653: F64 = F64::min(fTemp652, self.fVec45[((i32::wrapping_sub(self.IOTA0, 16)) & 31) as usize]); + self.fVec46[(self.IOTA0 & 63) as usize] = fTemp653; + let mut fTemp654: F64 = F64::min(fTemp653, self.fVec46[((i32::wrapping_sub(self.IOTA0, 32)) & 63) as usize]); + self.fVec47[(self.IOTA0 & 127) as usize] = fTemp654; + let mut fTemp655: F64 = F64::min(fTemp654, self.fVec47[((i32::wrapping_sub(self.IOTA0, 64)) & 127) as usize]); + self.fVec48[(self.IOTA0 & 255) as usize] = fTemp655; + let mut fTemp656: F64 = F64::min(fTemp655, self.fVec48[((i32::wrapping_sub(self.IOTA0, 128)) & 255) as usize]); + self.fVec49[(self.IOTA0 & 511) as usize] = fTemp656; + let mut fTemp657: F64 = F64::min(fTemp656, self.fVec49[((i32::wrapping_sub(self.IOTA0, 256)) & 511) as usize]); + self.fVec50[(self.IOTA0 & 1023) as usize] = fTemp657; + let mut fTemp658: F64 = F64::min(fTemp657, self.fVec50[((i32::wrapping_sub(self.IOTA0, 512)) & 1023) as usize]); + self.fVec51[(self.IOTA0 & 2047) as usize] = fTemp658; + self.fVec52[(self.IOTA0 & 4095) as usize] = F64::min(fTemp658, self.fVec51[((i32::wrapping_sub(self.IOTA0, 1024)) & 2047) as usize]); + let mut fTemp659: F64 = F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(F64::min(if iSlow4 != 0 {self.fRec17[0]} else {1.7976931348623157e+308}, if iSlow45 != 0 {self.fVec42[iSlow4 as usize]} else {1.7976931348623157e+308}), if iSlow46 != 0 {self.fVec43[iSlow47 as usize]} else {1.7976931348623157e+308}), if iSlow48 != 0 {self.fVec44[iSlow49 as usize]} else {1.7976931348623157e+308}), if iSlow50 != 0 {self.fVec45[((i32::wrapping_sub(self.IOTA0, iSlow51)) & 31) as usize]} else {1.7976931348623157e+308}), if iSlow52 != 0 {self.fVec46[((i32::wrapping_sub(self.IOTA0, iSlow53)) & 63) as usize]} else {1.7976931348623157e+308}), if iSlow54 != 0 {self.fVec47[((i32::wrapping_sub(self.IOTA0, iSlow55)) & 127) as usize]} else {1.7976931348623157e+308}), if iSlow56 != 0 {self.fVec48[((i32::wrapping_sub(self.IOTA0, iSlow57)) & 255) as usize]} else {1.7976931348623157e+308}), if iSlow58 != 0 {self.fVec49[((i32::wrapping_sub(self.IOTA0, iSlow59)) & 511) as usize]} else {1.7976931348623157e+308}), if iSlow60 != 0 {self.fVec50[((i32::wrapping_sub(self.IOTA0, iSlow61)) & 1023) as usize]} else {1.7976931348623157e+308}), if iSlow62 != 0 {self.fVec51[((i32::wrapping_sub(self.IOTA0, iSlow63)) & 2047) as usize]} else {1.7976931348623157e+308}), if iSlow64 != 0 {self.fVec52[((i32::wrapping_sub(self.IOTA0, iSlow65)) & 4095) as usize]} else {1.7976931348623157e+308}) - fTemp634; + self.fVec53[0] = fTemp659; + let mut iTemp660: i32 = (fTemp659 > 0.0) as i32; + let mut fTemp661: F64 = if iTemp660 != 0 {fSlow67} else {fSlow66}; + self.fVec54[0] = fTemp661; + let mut fTemp662: F64 = 2.0 * fTemp661; + let mut iTemp663: i32 = (fTemp662) as i32; + let mut iTemp664: i32 = std::cmp::max(0, std::cmp::min(iTemp663, 2)); + let mut iTemp665: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, 98301), 196607)); + let mut fTemp666: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp665, 3)) as usize] }; + let mut fTemp667: F64 = unsafe { ftbl0mydspSIG0[iTemp665 as usize] }; + let mut fTemp668: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp665, 1)) as usize] } - fTemp667; + let mut fTemp669: F64 = fTemp662 - (iTemp663) as F64; + let mut fTemp670: F64 = fTemp667 + fTemp669 * fTemp668 + 0.5 * (fTemp666 - (fTemp667 + fTemp669 * (fTemp668 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp665, 4)) as usize] } - fTemp666)))); + let mut fTemp671: F64 = if iTemp660 != 0 {fTemp670} else {1.0 - fTemp670}; + let mut iTemp672: i32 = (fTemp659 < 0.0) as i32; + let mut fTemp673: F64 = fSlow1 * (iTemp672) as F64 + fSlow13 * (iTemp660) as F64; + self.fVec55[0] = fTemp673; + let mut fTemp674: F64 = self.fConst10 / fTemp673; + let mut fTemp675: F64 = fTemp674 + 0.5; + let mut fTemp676: F64 = 65535.0 * (1.0 - fTemp675); + let mut iTemp677: i32 = (fTemp676) as i32; + let mut iTemp678: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp677, 65535)))), 196607)); + let mut fTemp679: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp678, 3)) as usize] }; + let mut fTemp680: F64 = unsafe { ftbl0mydspSIG0[iTemp678 as usize] }; + let mut fTemp681: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp678, 1)) as usize] } - fTemp680; + let mut fTemp682: F64 = 65535.0 * fTemp675; + let mut iTemp683: i32 = (fTemp682) as i32; + let mut iTemp684: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp683, 65535)))), 196607)); + let mut fTemp685: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp684, 3), 196607))) as usize] }; + let mut fTemp686: F64 = unsafe { ftbl0mydspSIG0[iTemp684 as usize] }; + let mut fTemp687: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp684, 1), 196607))) as usize] } - fTemp686; + let mut fTemp688: F64 = 2.0 * self.fVec54[1]; + let mut iTemp689: i32 = (fTemp688) as i32; + let mut iTemp690: i32 = std::cmp::max(0, std::cmp::min(iTemp689, 2)); + let mut fTemp691: F64 = 65535.0 * (1.0 - self.fRec15[1]); + let mut iTemp692: i32 = (fTemp691) as i32; + let mut iTemp693: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp692, 65535))), iTemp690), 196607)); + let mut fTemp694: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp693, 3), 196607))) as usize] }; + let mut fTemp695: F64 = unsafe { ftbl0mydspSIG0[iTemp693 as usize] }; + let mut fTemp696: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp693, 1), 196607))) as usize] } - fTemp695; + let mut fTemp697: F64 = fTemp688 - (iTemp689) as F64; + let mut fTemp698: F64 = 65535.0 * self.fRec15[1]; + let mut iTemp699: i32 = (fTemp698) as i32; + let mut iTemp700: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp690, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp699, 65535)))), 196607)); + let mut fTemp701: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp700, 3), 196607))) as usize] }; + let mut fTemp702: F64 = unsafe { ftbl0mydspSIG0[iTemp700 as usize] }; + let mut fTemp703: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp700, 1), 196607))) as usize] } - fTemp702; + let mut fTemp704: F64 = self.fRec15[1] + fTemp674; + let mut fTemp705: F64 = 65535.0 * (1.0 - fTemp704); + let mut iTemp706: i32 = (fTemp705) as i32; + let mut iTemp707: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp706, 65535)))), 196607)); + let mut fTemp708: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp707, 3)) as usize] }; + let mut fTemp709: F64 = unsafe { ftbl0mydspSIG0[iTemp707 as usize] }; + let mut fTemp710: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp707, 1)) as usize] } - fTemp709; + let mut fTemp711: F64 = 65535.0 * fTemp704; + let mut iTemp712: i32 = (fTemp711) as i32; + let mut iTemp713: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp712, 65535)))), 196607)); + let mut fTemp714: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp713, 3), 196607))) as usize] }; + let mut fTemp715: F64 = unsafe { ftbl0mydspSIG0[iTemp713 as usize] }; + let mut fTemp716: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp713, 1), 196607))) as usize] } - fTemp715; + let mut fTemp717: F64 = self.fRec15[1] + self.fConst10 * (1.0 / fTemp673 + 1.0 / self.fVec55[1]); + let mut fTemp718: F64 = 65535.0 * (1.0 - fTemp717); + let mut iTemp719: i32 = (fTemp718) as i32; + let mut iTemp720: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp719, 65535))), iTemp664), 196607)); + let mut fTemp721: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp720, 3)) as usize] }; + let mut fTemp722: F64 = unsafe { ftbl0mydspSIG0[iTemp720 as usize] }; + let mut fTemp723: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp720, 1)) as usize] } - fTemp722; + let mut fTemp724: F64 = 65535.0 * fTemp717; + let mut iTemp725: i32 = (fTemp724) as i32; + let mut iTemp726: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp725, 65535)))), 196607)); + let mut fTemp727: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp726, 3), 196607))) as usize] }; + let mut fTemp728: F64 = unsafe { ftbl0mydspSIG0[iTemp726 as usize] }; + let mut fTemp729: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp726, 1), 196607))) as usize] } - fTemp728; + let mut fTemp730: F64 = (if iTemp660 != 0 {fTemp728 + fTemp669 * fTemp729 + (fTemp724 - (iTemp725) as F64) * (fTemp727 - (fTemp728 + fTemp669 * (fTemp729 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp726, 4), 196607))) as usize] } - fTemp727))))} else {1.0 - (fTemp722 + fTemp669 * fTemp723 + (fTemp718 - (iTemp719) as F64) * (fTemp721 - (fTemp722 + fTemp669 * (fTemp723 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp720, 4)) as usize] } - fTemp721)))))} - if iTemp660 != 0 {fTemp715 + fTemp669 * fTemp716 + (fTemp711 - (iTemp712) as F64) * (fTemp714 - (fTemp715 + fTemp669 * (fTemp716 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp713, 4), 196607))) as usize] } - fTemp714))))} else {1.0 - (fTemp709 + fTemp669 * fTemp710 + (fTemp705 - (iTemp706) as F64) * (fTemp708 - (fTemp709 + fTemp669 * (fTemp710 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp707, 4), 196607))) as usize] } - fTemp708)))))}) * self.fVec53[1] / (fTemp659 * (1.0 - if iTemp660 != 0 {fTemp702 + fTemp697 * fTemp703 + (fTemp698 - (iTemp699) as F64) * (fTemp701 - (fTemp702 + fTemp697 * (fTemp703 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp700, 4), 196607))) as usize] } - fTemp701))))} else {1.0 - (fTemp695 + fTemp697 * fTemp696 + (fTemp691 - (iTemp692) as F64) * (fTemp694 - (fTemp695 + fTemp697 * (fTemp696 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp693, 4), 196607))) as usize] } - fTemp694)))))})); + let mut iTemp731: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp686 + fTemp669 * fTemp687 + (fTemp682 - (iTemp683) as F64) * (fTemp685 - (fTemp686 + fTemp669 * (fTemp687 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp684, 4), 196607))) as usize] } - fTemp685))))} else {1.0 - (fTemp680 + fTemp669 * fTemp681 + (fTemp676 - (iTemp677) as F64) * (fTemp679 - (fTemp680 + fTemp669 * (fTemp681 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp678, 4)) as usize] } - fTemp679)))))} - fTemp671) / (1.0 - fTemp671))) as i32; + let mut fTemp732: F64 = if iTemp731 != 0 {1.0} else {0.5}; + let mut fTemp733: F64 = if iTemp731 != 0 {0.5} else {0.0}; + let mut fTemp734: F64 = fTemp733 + fTemp732; + let mut fTemp735: F64 = 0.5 * fTemp734; + let mut fTemp736: F64 = 65535.0 * (1.0 - fTemp735); + let mut iTemp737: i32 = (fTemp736) as i32; + let mut iTemp738: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp737, 65535)))), 196607)); + let mut fTemp739: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp738, 3)) as usize] }; + let mut fTemp740: F64 = unsafe { ftbl0mydspSIG0[iTemp738 as usize] }; + let mut fTemp741: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp738, 1)) as usize] } - fTemp740; + let mut fTemp742: F64 = 32767.5 * fTemp734; + let mut iTemp743: i32 = (fTemp742) as i32; + let mut iTemp744: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp743, 65535)))), 196607)); + let mut fTemp745: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp744, 3)) as usize] }; + let mut fTemp746: F64 = unsafe { ftbl0mydspSIG0[iTemp744 as usize] }; + let mut fTemp747: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp744, 1)) as usize] } - fTemp746; + let mut fTemp748: F64 = if iTemp660 != 0 {fTemp746 + fTemp669 * fTemp747 + (fTemp742 - (iTemp743) as F64) * (fTemp745 - (fTemp746 + fTemp669 * (fTemp747 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp744, 4)) as usize] } - fTemp745))))} else {1.0 - (fTemp740 + fTemp669 * fTemp741 + (fTemp736 - (iTemp737) as F64) * (fTemp739 - (fTemp740 + fTemp669 * (fTemp741 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp738, 4)) as usize] } - fTemp739)))))}; + let mut fTemp749: F64 = fTemp674 + fTemp735; + let mut fTemp750: F64 = 65535.0 * (1.0 - fTemp749); + let mut iTemp751: i32 = (fTemp750) as i32; + let mut iTemp752: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp751, 65535)))), 196607)); + let mut fTemp753: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp752, 3)) as usize] }; + let mut fTemp754: F64 = unsafe { ftbl0mydspSIG0[iTemp752 as usize] }; + let mut fTemp755: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp752, 1)) as usize] } - fTemp754; + let mut fTemp756: F64 = 65535.0 * fTemp749; + let mut iTemp757: i32 = (fTemp756) as i32; + let mut iTemp758: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp757, 65535)))), 196607)); + let mut fTemp759: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp758, 3), 196607))) as usize] }; + let mut fTemp760: F64 = unsafe { ftbl0mydspSIG0[iTemp758 as usize] }; + let mut fTemp761: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp758, 1), 196607))) as usize] } - fTemp760; + let mut iTemp762: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp760 + fTemp669 * fTemp761 + (fTemp756 - (iTemp757) as F64) * (fTemp759 - (fTemp760 + fTemp669 * (fTemp761 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp758, 4), 196607))) as usize] } - fTemp759))))} else {1.0 - (fTemp754 + fTemp669 * fTemp755 + (fTemp750 - (iTemp751) as F64) * (fTemp753 - (fTemp754 + fTemp669 * (fTemp755 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp752, 4)) as usize] } - fTemp753)))))} - fTemp748) / (1.0 - fTemp748))) as i32; + let mut fTemp763: F64 = if iTemp762 != 0 {fTemp732} else {fTemp735}; + let mut fTemp764: F64 = if iTemp762 != 0 {fTemp735} else {fTemp733}; + let mut fTemp765: F64 = fTemp764 + fTemp763; + let mut fTemp766: F64 = 0.5 * fTemp765; + let mut fTemp767: F64 = 65535.0 * (1.0 - fTemp766); + let mut iTemp768: i32 = (fTemp767) as i32; + let mut iTemp769: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp768, 65535)))), 196607)); + let mut fTemp770: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp769, 3)) as usize] }; + let mut fTemp771: F64 = unsafe { ftbl0mydspSIG0[iTemp769 as usize] }; + let mut fTemp772: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp769, 1)) as usize] } - fTemp771; + let mut fTemp773: F64 = 32767.5 * fTemp765; + let mut iTemp774: i32 = (fTemp773) as i32; + let mut iTemp775: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp774, 65535)))), 196607)); + let mut fTemp776: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp775, 3)) as usize] }; + let mut fTemp777: F64 = unsafe { ftbl0mydspSIG0[iTemp775 as usize] }; + let mut fTemp778: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp775, 1)) as usize] } - fTemp777; + let mut fTemp779: F64 = if iTemp660 != 0 {fTemp777 + fTemp669 * fTemp778 + (fTemp773 - (iTemp774) as F64) * (fTemp776 - (fTemp777 + fTemp669 * (fTemp778 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp775, 4)) as usize] } - fTemp776))))} else {1.0 - (fTemp771 + fTemp669 * fTemp772 + (fTemp767 - (iTemp768) as F64) * (fTemp770 - (fTemp771 + fTemp669 * (fTemp772 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp769, 4)) as usize] } - fTemp770)))))}; + let mut fTemp780: F64 = fTemp674 + fTemp766; + let mut fTemp781: F64 = 65535.0 * (1.0 - fTemp780); + let mut iTemp782: i32 = (fTemp781) as i32; + let mut iTemp783: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp782, 65535)))), 196607)); + let mut fTemp784: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp783, 3)) as usize] }; + let mut fTemp785: F64 = unsafe { ftbl0mydspSIG0[iTemp783 as usize] }; + let mut fTemp786: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp783, 1)) as usize] } - fTemp785; + let mut fTemp787: F64 = 65535.0 * fTemp780; + let mut iTemp788: i32 = (fTemp787) as i32; + let mut iTemp789: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp788, 65535)))), 196607)); + let mut fTemp790: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp789, 3), 196607))) as usize] }; + let mut fTemp791: F64 = unsafe { ftbl0mydspSIG0[iTemp789 as usize] }; + let mut fTemp792: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp789, 1), 196607))) as usize] } - fTemp791; + let mut iTemp793: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp791 + fTemp669 * fTemp792 + (fTemp787 - (iTemp788) as F64) * (fTemp790 - (fTemp791 + fTemp669 * (fTemp792 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp789, 4), 196607))) as usize] } - fTemp790))))} else {1.0 - (fTemp785 + fTemp669 * fTemp786 + (fTemp781 - (iTemp782) as F64) * (fTemp784 - (fTemp785 + fTemp669 * (fTemp786 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp783, 4)) as usize] } - fTemp784)))))} - fTemp779) / (1.0 - fTemp779))) as i32; + let mut fTemp794: F64 = if iTemp793 != 0 {fTemp763} else {fTemp766}; + let mut fTemp795: F64 = if iTemp793 != 0 {fTemp766} else {fTemp764}; + let mut fTemp796: F64 = fTemp795 + fTemp794; + let mut fTemp797: F64 = 0.5 * fTemp796; + let mut fTemp798: F64 = 65535.0 * (1.0 - fTemp797); + let mut iTemp799: i32 = (fTemp798) as i32; + let mut iTemp800: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp799, 65535)))), 196607)); + let mut fTemp801: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp800, 3)) as usize] }; + let mut fTemp802: F64 = unsafe { ftbl0mydspSIG0[iTemp800 as usize] }; + let mut fTemp803: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp800, 1)) as usize] } - fTemp802; + let mut fTemp804: F64 = 32767.5 * fTemp796; + let mut iTemp805: i32 = (fTemp804) as i32; + let mut iTemp806: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp805, 65535)))), 196607)); + let mut fTemp807: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp806, 3)) as usize] }; + let mut fTemp808: F64 = unsafe { ftbl0mydspSIG0[iTemp806 as usize] }; + let mut fTemp809: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp806, 1)) as usize] } - fTemp808; + let mut fTemp810: F64 = if iTemp660 != 0 {fTemp808 + fTemp669 * fTemp809 + (fTemp804 - (iTemp805) as F64) * (fTemp807 - (fTemp808 + fTemp669 * (fTemp809 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp806, 4)) as usize] } - fTemp807))))} else {1.0 - (fTemp802 + fTemp669 * fTemp803 + (fTemp798 - (iTemp799) as F64) * (fTemp801 - (fTemp802 + fTemp669 * (fTemp803 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp800, 4)) as usize] } - fTemp801)))))}; + let mut fTemp811: F64 = fTemp674 + fTemp797; + let mut fTemp812: F64 = 65535.0 * (1.0 - fTemp811); + let mut iTemp813: i32 = (fTemp812) as i32; + let mut iTemp814: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp813, 65535)))), 196607)); + let mut fTemp815: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp814, 3)) as usize] }; + let mut fTemp816: F64 = unsafe { ftbl0mydspSIG0[iTemp814 as usize] }; + let mut fTemp817: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp814, 1)) as usize] } - fTemp816; + let mut fTemp818: F64 = 65535.0 * fTemp811; + let mut iTemp819: i32 = (fTemp818) as i32; + let mut iTemp820: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp819, 65535)))), 196607)); + let mut fTemp821: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp820, 3), 196607))) as usize] }; + let mut fTemp822: F64 = unsafe { ftbl0mydspSIG0[iTemp820 as usize] }; + let mut fTemp823: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp820, 1), 196607))) as usize] } - fTemp822; + let mut iTemp824: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp822 + fTemp669 * fTemp823 + (fTemp818 - (iTemp819) as F64) * (fTemp821 - (fTemp822 + fTemp669 * (fTemp823 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp820, 4), 196607))) as usize] } - fTemp821))))} else {1.0 - (fTemp816 + fTemp669 * fTemp817 + (fTemp812 - (iTemp813) as F64) * (fTemp815 - (fTemp816 + fTemp669 * (fTemp817 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp814, 4)) as usize] } - fTemp815)))))} - fTemp810) / (1.0 - fTemp810))) as i32; + let mut fTemp825: F64 = if iTemp824 != 0 {fTemp794} else {fTemp797}; + let mut fTemp826: F64 = if iTemp824 != 0 {fTemp797} else {fTemp795}; + let mut fTemp827: F64 = fTemp826 + fTemp825; + let mut fTemp828: F64 = 0.5 * fTemp827; + let mut fTemp829: F64 = 65535.0 * (1.0 - fTemp828); + let mut iTemp830: i32 = (fTemp829) as i32; + let mut iTemp831: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp830, 65535)))), 196607)); + let mut fTemp832: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp831, 3)) as usize] }; + let mut fTemp833: F64 = unsafe { ftbl0mydspSIG0[iTemp831 as usize] }; + let mut fTemp834: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp831, 1)) as usize] } - fTemp833; + let mut fTemp835: F64 = 32767.5 * fTemp827; + let mut iTemp836: i32 = (fTemp835) as i32; + let mut iTemp837: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp836, 65535)))), 196607)); + let mut fTemp838: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp837, 3)) as usize] }; + let mut fTemp839: F64 = unsafe { ftbl0mydspSIG0[iTemp837 as usize] }; + let mut fTemp840: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp837, 1)) as usize] } - fTemp839; + let mut fTemp841: F64 = if iTemp660 != 0 {fTemp839 + fTemp669 * fTemp840 + (fTemp835 - (iTemp836) as F64) * (fTemp838 - (fTemp839 + fTemp669 * (fTemp840 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp837, 4)) as usize] } - fTemp838))))} else {1.0 - (fTemp833 + fTemp669 * fTemp834 + (fTemp829 - (iTemp830) as F64) * (fTemp832 - (fTemp833 + fTemp669 * (fTemp834 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp831, 4)) as usize] } - fTemp832)))))}; + let mut fTemp842: F64 = fTemp674 + fTemp828; + let mut fTemp843: F64 = 65535.0 * (1.0 - fTemp842); + let mut iTemp844: i32 = (fTemp843) as i32; + let mut iTemp845: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp844, 65535)))), 196607)); + let mut fTemp846: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp845, 3)) as usize] }; + let mut fTemp847: F64 = unsafe { ftbl0mydspSIG0[iTemp845 as usize] }; + let mut fTemp848: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp845, 1)) as usize] } - fTemp847; + let mut fTemp849: F64 = 65535.0 * fTemp842; + let mut iTemp850: i32 = (fTemp849) as i32; + let mut iTemp851: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp850, 65535)))), 196607)); + let mut fTemp852: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp851, 3), 196607))) as usize] }; + let mut fTemp853: F64 = unsafe { ftbl0mydspSIG0[iTemp851 as usize] }; + let mut fTemp854: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp851, 1), 196607))) as usize] } - fTemp853; + let mut iTemp855: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp853 + fTemp669 * fTemp854 + (fTemp849 - (iTemp850) as F64) * (fTemp852 - (fTemp853 + fTemp669 * (fTemp854 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp851, 4), 196607))) as usize] } - fTemp852))))} else {1.0 - (fTemp847 + fTemp669 * fTemp848 + (fTemp843 - (iTemp844) as F64) * (fTemp846 - (fTemp847 + fTemp669 * (fTemp848 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp845, 4)) as usize] } - fTemp846)))))} - fTemp841) / (1.0 - fTemp841))) as i32; + let mut fTemp856: F64 = if iTemp855 != 0 {fTemp825} else {fTemp828}; + let mut fTemp857: F64 = if iTemp855 != 0 {fTemp828} else {fTemp826}; + let mut fTemp858: F64 = fTemp857 + fTemp856; + let mut fTemp859: F64 = 0.5 * fTemp858; + let mut fTemp860: F64 = 65535.0 * (1.0 - fTemp859); + let mut iTemp861: i32 = (fTemp860) as i32; + let mut iTemp862: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp861, 65535)))), 196607)); + let mut fTemp863: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp862, 3)) as usize] }; + let mut fTemp864: F64 = unsafe { ftbl0mydspSIG0[iTemp862 as usize] }; + let mut fTemp865: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp862, 1)) as usize] } - fTemp864; + let mut fTemp866: F64 = 32767.5 * fTemp858; + let mut iTemp867: i32 = (fTemp866) as i32; + let mut iTemp868: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp867, 65535)))), 196607)); + let mut fTemp869: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp868, 3)) as usize] }; + let mut fTemp870: F64 = unsafe { ftbl0mydspSIG0[iTemp868 as usize] }; + let mut fTemp871: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp868, 1)) as usize] } - fTemp870; + let mut fTemp872: F64 = if iTemp660 != 0 {fTemp870 + fTemp669 * fTemp871 + (fTemp866 - (iTemp867) as F64) * (fTemp869 - (fTemp870 + fTemp669 * (fTemp871 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp868, 4)) as usize] } - fTemp869))))} else {1.0 - (fTemp864 + fTemp669 * fTemp865 + (fTemp860 - (iTemp861) as F64) * (fTemp863 - (fTemp864 + fTemp669 * (fTemp865 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp862, 4)) as usize] } - fTemp863)))))}; + let mut fTemp873: F64 = fTemp674 + fTemp859; + let mut fTemp874: F64 = 65535.0 * (1.0 - fTemp873); + let mut iTemp875: i32 = (fTemp874) as i32; + let mut iTemp876: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp875, 65535)))), 196607)); + let mut fTemp877: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp876, 3)) as usize] }; + let mut fTemp878: F64 = unsafe { ftbl0mydspSIG0[iTemp876 as usize] }; + let mut fTemp879: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp876, 1)) as usize] } - fTemp878; + let mut fTemp880: F64 = 65535.0 * fTemp873; + let mut iTemp881: i32 = (fTemp880) as i32; + let mut iTemp882: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp881, 65535)))), 196607)); + let mut fTemp883: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp882, 3), 196607))) as usize] }; + let mut fTemp884: F64 = unsafe { ftbl0mydspSIG0[iTemp882 as usize] }; + let mut fTemp885: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp882, 1), 196607))) as usize] } - fTemp884; + let mut iTemp886: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp884 + fTemp669 * fTemp885 + (fTemp880 - (iTemp881) as F64) * (fTemp883 - (fTemp884 + fTemp669 * (fTemp885 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp882, 4), 196607))) as usize] } - fTemp883))))} else {1.0 - (fTemp878 + fTemp669 * fTemp879 + (fTemp874 - (iTemp875) as F64) * (fTemp877 - (fTemp878 + fTemp669 * (fTemp879 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp876, 4)) as usize] } - fTemp877)))))} - fTemp872) / (1.0 - fTemp872))) as i32; + let mut fTemp887: F64 = if iTemp886 != 0 {fTemp856} else {fTemp859}; + let mut fTemp888: F64 = if iTemp886 != 0 {fTemp859} else {fTemp857}; + let mut fTemp889: F64 = fTemp888 + fTemp887; + let mut fTemp890: F64 = 0.5 * fTemp889; + let mut fTemp891: F64 = 65535.0 * (1.0 - fTemp890); + let mut iTemp892: i32 = (fTemp891) as i32; + let mut iTemp893: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp892, 65535)))), 196607)); + let mut fTemp894: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp893, 3)) as usize] }; + let mut fTemp895: F64 = unsafe { ftbl0mydspSIG0[iTemp893 as usize] }; + let mut fTemp896: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp893, 1)) as usize] } - fTemp895; + let mut fTemp897: F64 = 32767.5 * fTemp889; + let mut iTemp898: i32 = (fTemp897) as i32; + let mut iTemp899: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp898, 65535)))), 196607)); + let mut fTemp900: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp899, 3)) as usize] }; + let mut fTemp901: F64 = unsafe { ftbl0mydspSIG0[iTemp899 as usize] }; + let mut fTemp902: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp899, 1)) as usize] } - fTemp901; + let mut fTemp903: F64 = if iTemp660 != 0 {fTemp901 + fTemp669 * fTemp902 + (fTemp897 - (iTemp898) as F64) * (fTemp900 - (fTemp901 + fTemp669 * (fTemp902 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp899, 4)) as usize] } - fTemp900))))} else {1.0 - (fTemp895 + fTemp669 * fTemp896 + (fTemp891 - (iTemp892) as F64) * (fTemp894 - (fTemp895 + fTemp669 * (fTemp896 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp893, 4)) as usize] } - fTemp894)))))}; + let mut fTemp904: F64 = fTemp674 + fTemp890; + let mut fTemp905: F64 = 65535.0 * (1.0 - fTemp904); + let mut iTemp906: i32 = (fTemp905) as i32; + let mut iTemp907: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp906, 65535)))), 196607)); + let mut fTemp908: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp907, 3)) as usize] }; + let mut fTemp909: F64 = unsafe { ftbl0mydspSIG0[iTemp907 as usize] }; + let mut fTemp910: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp907, 1)) as usize] } - fTemp909; + let mut fTemp911: F64 = 65535.0 * fTemp904; + let mut iTemp912: i32 = (fTemp911) as i32; + let mut iTemp913: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp912, 65535)))), 196607)); + let mut fTemp914: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp913, 3), 196607))) as usize] }; + let mut fTemp915: F64 = unsafe { ftbl0mydspSIG0[iTemp913 as usize] }; + let mut fTemp916: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp913, 1), 196607))) as usize] } - fTemp915; + let mut iTemp917: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp915 + fTemp669 * fTemp916 + (fTemp911 - (iTemp912) as F64) * (fTemp914 - (fTemp915 + fTemp669 * (fTemp916 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp913, 4), 196607))) as usize] } - fTemp914))))} else {1.0 - (fTemp909 + fTemp669 * fTemp910 + (fTemp905 - (iTemp906) as F64) * (fTemp908 - (fTemp909 + fTemp669 * (fTemp910 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp907, 4)) as usize] } - fTemp908)))))} - fTemp903) / (1.0 - fTemp903))) as i32; + let mut fTemp918: F64 = if iTemp917 != 0 {fTemp887} else {fTemp890}; + let mut fTemp919: F64 = if iTemp917 != 0 {fTemp890} else {fTemp888}; + let mut fTemp920: F64 = fTemp919 + fTemp918; + let mut fTemp921: F64 = 0.5 * fTemp920; + let mut fTemp922: F64 = 65535.0 * (1.0 - fTemp921); + let mut iTemp923: i32 = (fTemp922) as i32; + let mut iTemp924: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp923, 65535)))), 196607)); + let mut fTemp925: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp924, 3)) as usize] }; + let mut fTemp926: F64 = unsafe { ftbl0mydspSIG0[iTemp924 as usize] }; + let mut fTemp927: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp924, 1)) as usize] } - fTemp926; + let mut fTemp928: F64 = 32767.5 * fTemp920; + let mut iTemp929: i32 = (fTemp928) as i32; + let mut iTemp930: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp929, 65535)))), 196607)); + let mut fTemp931: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp930, 3)) as usize] }; + let mut fTemp932: F64 = unsafe { ftbl0mydspSIG0[iTemp930 as usize] }; + let mut fTemp933: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp930, 1)) as usize] } - fTemp932; + let mut fTemp934: F64 = if iTemp660 != 0 {fTemp932 + fTemp669 * fTemp933 + (fTemp928 - (iTemp929) as F64) * (fTemp931 - (fTemp932 + fTemp669 * (fTemp933 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp930, 4)) as usize] } - fTemp931))))} else {1.0 - (fTemp926 + fTemp669 * fTemp927 + (fTemp922 - (iTemp923) as F64) * (fTemp925 - (fTemp926 + fTemp669 * (fTemp927 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp924, 4)) as usize] } - fTemp925)))))}; + let mut fTemp935: F64 = fTemp674 + fTemp921; + let mut fTemp936: F64 = 65535.0 * (1.0 - fTemp935); + let mut iTemp937: i32 = (fTemp936) as i32; + let mut iTemp938: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp937, 65535)))), 196607)); + let mut fTemp939: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp938, 3)) as usize] }; + let mut fTemp940: F64 = unsafe { ftbl0mydspSIG0[iTemp938 as usize] }; + let mut fTemp941: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp938, 1)) as usize] } - fTemp940; + let mut fTemp942: F64 = 65535.0 * fTemp935; + let mut iTemp943: i32 = (fTemp942) as i32; + let mut iTemp944: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp943, 65535)))), 196607)); + let mut fTemp945: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp944, 3), 196607))) as usize] }; + let mut fTemp946: F64 = unsafe { ftbl0mydspSIG0[iTemp944 as usize] }; + let mut fTemp947: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp944, 1), 196607))) as usize] } - fTemp946; + let mut iTemp948: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp946 + fTemp669 * fTemp947 + (fTemp942 - (iTemp943) as F64) * (fTemp945 - (fTemp946 + fTemp669 * (fTemp947 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp944, 4), 196607))) as usize] } - fTemp945))))} else {1.0 - (fTemp940 + fTemp669 * fTemp941 + (fTemp936 - (iTemp937) as F64) * (fTemp939 - (fTemp940 + fTemp669 * (fTemp941 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp938, 4)) as usize] } - fTemp939)))))} - fTemp934) / (1.0 - fTemp934))) as i32; + let mut fTemp949: F64 = if iTemp948 != 0 {fTemp918} else {fTemp921}; + let mut fTemp950: F64 = if iTemp948 != 0 {fTemp921} else {fTemp919}; + let mut fTemp951: F64 = fTemp950 + fTemp949; + let mut fTemp952: F64 = 0.5 * fTemp951; + let mut fTemp953: F64 = 65535.0 * (1.0 - fTemp952); + let mut iTemp954: i32 = (fTemp953) as i32; + let mut iTemp955: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp954, 65535)))), 196607)); + let mut fTemp956: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp955, 3)) as usize] }; + let mut fTemp957: F64 = unsafe { ftbl0mydspSIG0[iTemp955 as usize] }; + let mut fTemp958: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp955, 1)) as usize] } - fTemp957; + let mut fTemp959: F64 = 32767.5 * fTemp951; + let mut iTemp960: i32 = (fTemp959) as i32; + let mut iTemp961: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp960, 65535)))), 196607)); + let mut fTemp962: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp961, 3)) as usize] }; + let mut fTemp963: F64 = unsafe { ftbl0mydspSIG0[iTemp961 as usize] }; + let mut fTemp964: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp961, 1)) as usize] } - fTemp963; + let mut fTemp965: F64 = if iTemp660 != 0 {fTemp963 + fTemp669 * fTemp964 + (fTemp959 - (iTemp960) as F64) * (fTemp962 - (fTemp963 + fTemp669 * (fTemp964 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp961, 4)) as usize] } - fTemp962))))} else {1.0 - (fTemp957 + fTemp669 * fTemp958 + (fTemp953 - (iTemp954) as F64) * (fTemp956 - (fTemp957 + fTemp669 * (fTemp958 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp955, 4)) as usize] } - fTemp956)))))}; + let mut fTemp966: F64 = fTemp674 + fTemp952; + let mut fTemp967: F64 = 65535.0 * (1.0 - fTemp966); + let mut iTemp968: i32 = (fTemp967) as i32; + let mut iTemp969: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp968, 65535)))), 196607)); + let mut fTemp970: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp969, 3)) as usize] }; + let mut fTemp971: F64 = unsafe { ftbl0mydspSIG0[iTemp969 as usize] }; + let mut fTemp972: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp969, 1)) as usize] } - fTemp971; + let mut fTemp973: F64 = 65535.0 * fTemp966; + let mut iTemp974: i32 = (fTemp973) as i32; + let mut iTemp975: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp974, 65535)))), 196607)); + let mut fTemp976: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp975, 3), 196607))) as usize] }; + let mut fTemp977: F64 = unsafe { ftbl0mydspSIG0[iTemp975 as usize] }; + let mut fTemp978: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp975, 1), 196607))) as usize] } - fTemp977; + let mut iTemp979: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp977 + fTemp669 * fTemp978 + (fTemp973 - (iTemp974) as F64) * (fTemp976 - (fTemp977 + fTemp669 * (fTemp978 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp975, 4), 196607))) as usize] } - fTemp976))))} else {1.0 - (fTemp971 + fTemp669 * fTemp972 + (fTemp967 - (iTemp968) as F64) * (fTemp970 - (fTemp971 + fTemp669 * (fTemp972 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp969, 4)) as usize] } - fTemp970)))))} - fTemp965) / (1.0 - fTemp965))) as i32; + let mut fTemp980: F64 = if iTemp979 != 0 {fTemp949} else {fTemp952}; + let mut fTemp981: F64 = if iTemp979 != 0 {fTemp952} else {fTemp950}; + let mut fTemp982: F64 = fTemp981 + fTemp980; + let mut fTemp983: F64 = 0.5 * fTemp982; + let mut fTemp984: F64 = 65535.0 * (1.0 - fTemp983); + let mut iTemp985: i32 = (fTemp984) as i32; + let mut iTemp986: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp985, 65535)))), 196607)); + let mut fTemp987: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp986, 3)) as usize] }; + let mut fTemp988: F64 = unsafe { ftbl0mydspSIG0[iTemp986 as usize] }; + let mut fTemp989: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp986, 1)) as usize] } - fTemp988; + let mut fTemp990: F64 = 32767.5 * fTemp982; + let mut iTemp991: i32 = (fTemp990) as i32; + let mut iTemp992: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp991, 65535)))), 196607)); + let mut fTemp993: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp992, 3)) as usize] }; + let mut fTemp994: F64 = unsafe { ftbl0mydspSIG0[iTemp992 as usize] }; + let mut fTemp995: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp992, 1)) as usize] } - fTemp994; + let mut fTemp996: F64 = if iTemp660 != 0 {fTemp994 + fTemp669 * fTemp995 + (fTemp990 - (iTemp991) as F64) * (fTemp993 - (fTemp994 + fTemp669 * (fTemp995 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp992, 4)) as usize] } - fTemp993))))} else {1.0 - (fTemp988 + fTemp669 * fTemp989 + (fTemp984 - (iTemp985) as F64) * (fTemp987 - (fTemp988 + fTemp669 * (fTemp989 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp986, 4)) as usize] } - fTemp987)))))}; + let mut fTemp997: F64 = fTemp674 + fTemp983; + let mut fTemp998: F64 = 65535.0 * (1.0 - fTemp997); + let mut iTemp999: i32 = (fTemp998) as i32; + let mut iTemp1000: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp999, 65535)))), 196607)); + let mut fTemp1001: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1000, 3)) as usize] }; + let mut fTemp1002: F64 = unsafe { ftbl0mydspSIG0[iTemp1000 as usize] }; + let mut fTemp1003: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1000, 1)) as usize] } - fTemp1002; + let mut fTemp1004: F64 = 65535.0 * fTemp997; + let mut iTemp1005: i32 = (fTemp1004) as i32; + let mut iTemp1006: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1005, 65535)))), 196607)); + let mut fTemp1007: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1006, 3), 196607))) as usize] }; + let mut fTemp1008: F64 = unsafe { ftbl0mydspSIG0[iTemp1006 as usize] }; + let mut fTemp1009: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1006, 1), 196607))) as usize] } - fTemp1008; + let mut iTemp1010: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1008 + fTemp669 * fTemp1009 + (fTemp1004 - (iTemp1005) as F64) * (fTemp1007 - (fTemp1008 + fTemp669 * (fTemp1009 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1006, 4), 196607))) as usize] } - fTemp1007))))} else {1.0 - (fTemp1002 + fTemp669 * fTemp1003 + (fTemp998 - (iTemp999) as F64) * (fTemp1001 - (fTemp1002 + fTemp669 * (fTemp1003 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1000, 4)) as usize] } - fTemp1001)))))} - fTemp996) / (1.0 - fTemp996))) as i32; + let mut fTemp1011: F64 = if iTemp1010 != 0 {fTemp980} else {fTemp983}; + let mut fTemp1012: F64 = if iTemp1010 != 0 {fTemp983} else {fTemp981}; + let mut fTemp1013: F64 = fTemp1012 + fTemp1011; + let mut fTemp1014: F64 = 0.5 * fTemp1013; + let mut fTemp1015: F64 = 65535.0 * (1.0 - fTemp1014); + let mut iTemp1016: i32 = (fTemp1015) as i32; + let mut iTemp1017: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1016, 65535)))), 196607)); + let mut fTemp1018: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1017, 3)) as usize] }; + let mut fTemp1019: F64 = unsafe { ftbl0mydspSIG0[iTemp1017 as usize] }; + let mut fTemp1020: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1017, 1)) as usize] } - fTemp1019; + let mut fTemp1021: F64 = 32767.5 * fTemp1013; + let mut iTemp1022: i32 = (fTemp1021) as i32; + let mut iTemp1023: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1022, 65535)))), 196607)); + let mut fTemp1024: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1023, 3)) as usize] }; + let mut fTemp1025: F64 = unsafe { ftbl0mydspSIG0[iTemp1023 as usize] }; + let mut fTemp1026: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1023, 1)) as usize] } - fTemp1025; + let mut fTemp1027: F64 = if iTemp660 != 0 {fTemp1025 + fTemp669 * fTemp1026 + (fTemp1021 - (iTemp1022) as F64) * (fTemp1024 - (fTemp1025 + fTemp669 * (fTemp1026 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1023, 4)) as usize] } - fTemp1024))))} else {1.0 - (fTemp1019 + fTemp669 * fTemp1020 + (fTemp1015 - (iTemp1016) as F64) * (fTemp1018 - (fTemp1019 + fTemp669 * (fTemp1020 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1017, 4)) as usize] } - fTemp1018)))))}; + let mut fTemp1028: F64 = fTemp674 + fTemp1014; + let mut fTemp1029: F64 = 65535.0 * (1.0 - fTemp1028); + let mut iTemp1030: i32 = (fTemp1029) as i32; + let mut iTemp1031: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1030, 65535)))), 196607)); + let mut fTemp1032: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1031, 3)) as usize] }; + let mut fTemp1033: F64 = unsafe { ftbl0mydspSIG0[iTemp1031 as usize] }; + let mut fTemp1034: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1031, 1)) as usize] } - fTemp1033; + let mut fTemp1035: F64 = 65535.0 * fTemp1028; + let mut iTemp1036: i32 = (fTemp1035) as i32; + let mut iTemp1037: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1036, 65535)))), 196607)); + let mut fTemp1038: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1037, 3), 196607))) as usize] }; + let mut fTemp1039: F64 = unsafe { ftbl0mydspSIG0[iTemp1037 as usize] }; + let mut fTemp1040: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1037, 1), 196607))) as usize] } - fTemp1039; + let mut iTemp1041: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1039 + fTemp669 * fTemp1040 + (fTemp1035 - (iTemp1036) as F64) * (fTemp1038 - (fTemp1039 + fTemp669 * (fTemp1040 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1037, 4), 196607))) as usize] } - fTemp1038))))} else {1.0 - (fTemp1033 + fTemp669 * fTemp1034 + (fTemp1029 - (iTemp1030) as F64) * (fTemp1032 - (fTemp1033 + fTemp669 * (fTemp1034 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1031, 4)) as usize] } - fTemp1032)))))} - fTemp1027) / (1.0 - fTemp1027))) as i32; + let mut fTemp1042: F64 = if iTemp1041 != 0 {fTemp1011} else {fTemp1014}; + let mut fTemp1043: F64 = if iTemp1041 != 0 {fTemp1014} else {fTemp1012}; + let mut fTemp1044: F64 = fTemp1043 + fTemp1042; + let mut fTemp1045: F64 = 0.5 * fTemp1044; + let mut fTemp1046: F64 = 65535.0 * (1.0 - fTemp1045); + let mut iTemp1047: i32 = (fTemp1046) as i32; + let mut iTemp1048: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1047, 65535)))), 196607)); + let mut fTemp1049: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1048, 3)) as usize] }; + let mut fTemp1050: F64 = unsafe { ftbl0mydspSIG0[iTemp1048 as usize] }; + let mut fTemp1051: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1048, 1)) as usize] } - fTemp1050; + let mut fTemp1052: F64 = 32767.5 * fTemp1044; + let mut iTemp1053: i32 = (fTemp1052) as i32; + let mut iTemp1054: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1053, 65535)))), 196607)); + let mut fTemp1055: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1054, 3)) as usize] }; + let mut fTemp1056: F64 = unsafe { ftbl0mydspSIG0[iTemp1054 as usize] }; + let mut fTemp1057: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1054, 1)) as usize] } - fTemp1056; + let mut fTemp1058: F64 = if iTemp660 != 0 {fTemp1056 + fTemp669 * fTemp1057 + (fTemp1052 - (iTemp1053) as F64) * (fTemp1055 - (fTemp1056 + fTemp669 * (fTemp1057 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1054, 4)) as usize] } - fTemp1055))))} else {1.0 - (fTemp1050 + fTemp669 * fTemp1051 + (fTemp1046 - (iTemp1047) as F64) * (fTemp1049 - (fTemp1050 + fTemp669 * (fTemp1051 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1048, 4)) as usize] } - fTemp1049)))))}; + let mut fTemp1059: F64 = fTemp674 + fTemp1045; + let mut fTemp1060: F64 = 65535.0 * (1.0 - fTemp1059); + let mut iTemp1061: i32 = (fTemp1060) as i32; + let mut iTemp1062: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1061, 65535)))), 196607)); + let mut fTemp1063: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1062, 3)) as usize] }; + let mut fTemp1064: F64 = unsafe { ftbl0mydspSIG0[iTemp1062 as usize] }; + let mut fTemp1065: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1062, 1)) as usize] } - fTemp1064; + let mut fTemp1066: F64 = 65535.0 * fTemp1059; + let mut iTemp1067: i32 = (fTemp1066) as i32; + let mut iTemp1068: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1067, 65535)))), 196607)); + let mut fTemp1069: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1068, 3), 196607))) as usize] }; + let mut fTemp1070: F64 = unsafe { ftbl0mydspSIG0[iTemp1068 as usize] }; + let mut fTemp1071: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1068, 1), 196607))) as usize] } - fTemp1070; + let mut iTemp1072: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1070 + fTemp669 * fTemp1071 + (fTemp1066 - (iTemp1067) as F64) * (fTemp1069 - (fTemp1070 + fTemp669 * (fTemp1071 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1068, 4), 196607))) as usize] } - fTemp1069))))} else {1.0 - (fTemp1064 + fTemp669 * fTemp1065 + (fTemp1060 - (iTemp1061) as F64) * (fTemp1063 - (fTemp1064 + fTemp669 * (fTemp1065 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1062, 4)) as usize] } - fTemp1063)))))} - fTemp1058) / (1.0 - fTemp1058))) as i32; + let mut fTemp1073: F64 = if iTemp1072 != 0 {fTemp1042} else {fTemp1045}; + let mut fTemp1074: F64 = if iTemp1072 != 0 {fTemp1045} else {fTemp1043}; + let mut fTemp1075: F64 = fTemp1074 + fTemp1073; + let mut fTemp1076: F64 = 0.5 * fTemp1075; + let mut fTemp1077: F64 = 65535.0 * (1.0 - fTemp1076); + let mut iTemp1078: i32 = (fTemp1077) as i32; + let mut iTemp1079: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1078, 65535)))), 196607)); + let mut fTemp1080: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1079, 3)) as usize] }; + let mut fTemp1081: F64 = unsafe { ftbl0mydspSIG0[iTemp1079 as usize] }; + let mut fTemp1082: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1079, 1)) as usize] } - fTemp1081; + let mut fTemp1083: F64 = 32767.5 * fTemp1075; + let mut iTemp1084: i32 = (fTemp1083) as i32; + let mut iTemp1085: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1084, 65535)))), 196607)); + let mut fTemp1086: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1085, 3)) as usize] }; + let mut fTemp1087: F64 = unsafe { ftbl0mydspSIG0[iTemp1085 as usize] }; + let mut fTemp1088: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1085, 1)) as usize] } - fTemp1087; + let mut fTemp1089: F64 = if iTemp660 != 0 {fTemp1087 + fTemp669 * fTemp1088 + (fTemp1083 - (iTemp1084) as F64) * (fTemp1086 - (fTemp1087 + fTemp669 * (fTemp1088 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1085, 4)) as usize] } - fTemp1086))))} else {1.0 - (fTemp1081 + fTemp669 * fTemp1082 + (fTemp1077 - (iTemp1078) as F64) * (fTemp1080 - (fTemp1081 + fTemp669 * (fTemp1082 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1079, 4)) as usize] } - fTemp1080)))))}; + let mut fTemp1090: F64 = fTemp674 + fTemp1076; + let mut fTemp1091: F64 = 65535.0 * (1.0 - fTemp1090); + let mut iTemp1092: i32 = (fTemp1091) as i32; + let mut iTemp1093: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1092, 65535)))), 196607)); + let mut fTemp1094: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1093, 3)) as usize] }; + let mut fTemp1095: F64 = unsafe { ftbl0mydspSIG0[iTemp1093 as usize] }; + let mut fTemp1096: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1093, 1)) as usize] } - fTemp1095; + let mut fTemp1097: F64 = 65535.0 * fTemp1090; + let mut iTemp1098: i32 = (fTemp1097) as i32; + let mut iTemp1099: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1098, 65535)))), 196607)); + let mut fTemp1100: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1099, 3), 196607))) as usize] }; + let mut fTemp1101: F64 = unsafe { ftbl0mydspSIG0[iTemp1099 as usize] }; + let mut fTemp1102: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1099, 1), 196607))) as usize] } - fTemp1101; + let mut iTemp1103: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1101 + fTemp669 * fTemp1102 + (fTemp1097 - (iTemp1098) as F64) * (fTemp1100 - (fTemp1101 + fTemp669 * (fTemp1102 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1099, 4), 196607))) as usize] } - fTemp1100))))} else {1.0 - (fTemp1095 + fTemp669 * fTemp1096 + (fTemp1091 - (iTemp1092) as F64) * (fTemp1094 - (fTemp1095 + fTemp669 * (fTemp1096 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1093, 4)) as usize] } - fTemp1094)))))} - fTemp1089) / (1.0 - fTemp1089))) as i32; + let mut fTemp1104: F64 = if iTemp1103 != 0 {fTemp1073} else {fTemp1076}; + let mut fTemp1105: F64 = if iTemp1103 != 0 {fTemp1076} else {fTemp1074}; + let mut fTemp1106: F64 = fTemp1105 + fTemp1104; + let mut fTemp1107: F64 = 0.5 * fTemp1106; + let mut fTemp1108: F64 = 65535.0 * (1.0 - fTemp1107); + let mut iTemp1109: i32 = (fTemp1108) as i32; + let mut iTemp1110: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1109, 65535)))), 196607)); + let mut fTemp1111: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1110, 3)) as usize] }; + let mut fTemp1112: F64 = unsafe { ftbl0mydspSIG0[iTemp1110 as usize] }; + let mut fTemp1113: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1110, 1)) as usize] } - fTemp1112; + let mut fTemp1114: F64 = 32767.5 * fTemp1106; + let mut iTemp1115: i32 = (fTemp1114) as i32; + let mut iTemp1116: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1115, 65535)))), 196607)); + let mut fTemp1117: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1116, 3)) as usize] }; + let mut fTemp1118: F64 = unsafe { ftbl0mydspSIG0[iTemp1116 as usize] }; + let mut fTemp1119: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1116, 1)) as usize] } - fTemp1118; + let mut fTemp1120: F64 = if iTemp660 != 0 {fTemp1118 + fTemp669 * fTemp1119 + (fTemp1114 - (iTemp1115) as F64) * (fTemp1117 - (fTemp1118 + fTemp669 * (fTemp1119 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1116, 4)) as usize] } - fTemp1117))))} else {1.0 - (fTemp1112 + fTemp669 * fTemp1113 + (fTemp1108 - (iTemp1109) as F64) * (fTemp1111 - (fTemp1112 + fTemp669 * (fTemp1113 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1110, 4)) as usize] } - fTemp1111)))))}; + let mut fTemp1121: F64 = fTemp674 + fTemp1107; + let mut fTemp1122: F64 = 65535.0 * (1.0 - fTemp1121); + let mut iTemp1123: i32 = (fTemp1122) as i32; + let mut iTemp1124: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1123, 65535)))), 196607)); + let mut fTemp1125: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1124, 3)) as usize] }; + let mut fTemp1126: F64 = unsafe { ftbl0mydspSIG0[iTemp1124 as usize] }; + let mut fTemp1127: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1124, 1)) as usize] } - fTemp1126; + let mut fTemp1128: F64 = 65535.0 * fTemp1121; + let mut iTemp1129: i32 = (fTemp1128) as i32; + let mut iTemp1130: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1129, 65535)))), 196607)); + let mut fTemp1131: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1130, 3), 196607))) as usize] }; + let mut fTemp1132: F64 = unsafe { ftbl0mydspSIG0[iTemp1130 as usize] }; + let mut fTemp1133: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1130, 1), 196607))) as usize] } - fTemp1132; + let mut iTemp1134: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1132 + fTemp669 * fTemp1133 + (fTemp1128 - (iTemp1129) as F64) * (fTemp1131 - (fTemp1132 + fTemp669 * (fTemp1133 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1130, 4), 196607))) as usize] } - fTemp1131))))} else {1.0 - (fTemp1126 + fTemp669 * fTemp1127 + (fTemp1122 - (iTemp1123) as F64) * (fTemp1125 - (fTemp1126 + fTemp669 * (fTemp1127 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1124, 4)) as usize] } - fTemp1125)))))} - fTemp1120) / (1.0 - fTemp1120))) as i32; + let mut fTemp1135: F64 = if iTemp1134 != 0 {fTemp1104} else {fTemp1107}; + let mut fTemp1136: F64 = if iTemp1134 != 0 {fTemp1107} else {fTemp1105}; + let mut fTemp1137: F64 = fTemp1136 + fTemp1135; + let mut fTemp1138: F64 = 0.5 * fTemp1137; + let mut fTemp1139: F64 = 65535.0 * (1.0 - fTemp1138); + let mut iTemp1140: i32 = (fTemp1139) as i32; + let mut iTemp1141: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1140, 65535)))), 196607)); + let mut fTemp1142: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1141, 3)) as usize] }; + let mut fTemp1143: F64 = unsafe { ftbl0mydspSIG0[iTemp1141 as usize] }; + let mut fTemp1144: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1141, 1)) as usize] } - fTemp1143; + let mut fTemp1145: F64 = 32767.5 * fTemp1137; + let mut iTemp1146: i32 = (fTemp1145) as i32; + let mut iTemp1147: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1146, 65535)))), 196607)); + let mut fTemp1148: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1147, 3)) as usize] }; + let mut fTemp1149: F64 = unsafe { ftbl0mydspSIG0[iTemp1147 as usize] }; + let mut fTemp1150: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1147, 1)) as usize] } - fTemp1149; + let mut fTemp1151: F64 = if iTemp660 != 0 {fTemp1149 + fTemp669 * fTemp1150 + (fTemp1145 - (iTemp1146) as F64) * (fTemp1148 - (fTemp1149 + fTemp669 * (fTemp1150 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1147, 4)) as usize] } - fTemp1148))))} else {1.0 - (fTemp1143 + fTemp669 * fTemp1144 + (fTemp1139 - (iTemp1140) as F64) * (fTemp1142 - (fTemp1143 + fTemp669 * (fTemp1144 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1141, 4)) as usize] } - fTemp1142)))))}; + let mut fTemp1152: F64 = fTemp674 + fTemp1138; + let mut fTemp1153: F64 = 65535.0 * (1.0 - fTemp1152); + let mut iTemp1154: i32 = (fTemp1153) as i32; + let mut iTemp1155: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1154, 65535)))), 196607)); + let mut fTemp1156: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1155, 3)) as usize] }; + let mut fTemp1157: F64 = unsafe { ftbl0mydspSIG0[iTemp1155 as usize] }; + let mut fTemp1158: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1155, 1)) as usize] } - fTemp1157; + let mut fTemp1159: F64 = 65535.0 * fTemp1152; + let mut iTemp1160: i32 = (fTemp1159) as i32; + let mut iTemp1161: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1160, 65535)))), 196607)); + let mut fTemp1162: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1161, 3), 196607))) as usize] }; + let mut fTemp1163: F64 = unsafe { ftbl0mydspSIG0[iTemp1161 as usize] }; + let mut fTemp1164: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1161, 1), 196607))) as usize] } - fTemp1163; + let mut iTemp1165: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1163 + fTemp669 * fTemp1164 + (fTemp1159 - (iTemp1160) as F64) * (fTemp1162 - (fTemp1163 + fTemp669 * (fTemp1164 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1161, 4), 196607))) as usize] } - fTemp1162))))} else {1.0 - (fTemp1157 + fTemp669 * fTemp1158 + (fTemp1153 - (iTemp1154) as F64) * (fTemp1156 - (fTemp1157 + fTemp669 * (fTemp1158 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1155, 4)) as usize] } - fTemp1156)))))} - fTemp1151) / (1.0 - fTemp1151))) as i32; + let mut fTemp1166: F64 = if iTemp1165 != 0 {fTemp1135} else {fTemp1138}; + let mut fTemp1167: F64 = if iTemp1165 != 0 {fTemp1138} else {fTemp1136}; + let mut fTemp1168: F64 = fTemp1167 + fTemp1166; + let mut fTemp1169: F64 = 0.5 * fTemp1168; + let mut fTemp1170: F64 = 65535.0 * (1.0 - fTemp1169); + let mut iTemp1171: i32 = (fTemp1170) as i32; + let mut iTemp1172: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1171, 65535)))), 196607)); + let mut fTemp1173: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1172, 3)) as usize] }; + let mut fTemp1174: F64 = unsafe { ftbl0mydspSIG0[iTemp1172 as usize] }; + let mut fTemp1175: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1172, 1)) as usize] } - fTemp1174; + let mut fTemp1176: F64 = 32767.5 * fTemp1168; + let mut iTemp1177: i32 = (fTemp1176) as i32; + let mut iTemp1178: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1177, 65535)))), 196607)); + let mut fTemp1179: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1178, 3)) as usize] }; + let mut fTemp1180: F64 = unsafe { ftbl0mydspSIG0[iTemp1178 as usize] }; + let mut fTemp1181: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1178, 1)) as usize] } - fTemp1180; + let mut fTemp1182: F64 = if iTemp660 != 0 {fTemp1180 + fTemp669 * fTemp1181 + (fTemp1176 - (iTemp1177) as F64) * (fTemp1179 - (fTemp1180 + fTemp669 * (fTemp1181 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1178, 4), 196607))) as usize] } - fTemp1179))))} else {1.0 - (fTemp1174 + fTemp669 * fTemp1175 + (fTemp1170 - (iTemp1171) as F64) * (fTemp1173 - (fTemp1174 + fTemp669 * (fTemp1175 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1172, 4), 196607))) as usize] } - fTemp1173)))))}; + let mut fTemp1183: F64 = fTemp674 + fTemp1169; + let mut fTemp1184: F64 = 65535.0 * (1.0 - fTemp1183); + let mut iTemp1185: i32 = (fTemp1184) as i32; + let mut iTemp1186: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1185, 65535)))), 196607)); + let mut fTemp1187: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1186, 3)) as usize] }; + let mut fTemp1188: F64 = unsafe { ftbl0mydspSIG0[iTemp1186 as usize] }; + let mut fTemp1189: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1186, 1)) as usize] } - fTemp1188; + let mut fTemp1190: F64 = 65535.0 * fTemp1183; + let mut iTemp1191: i32 = (fTemp1190) as i32; + let mut iTemp1192: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1191, 65535)))), 196607)); + let mut fTemp1193: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1192, 3), 196607))) as usize] }; + let mut fTemp1194: F64 = unsafe { ftbl0mydspSIG0[iTemp1192 as usize] }; + let mut fTemp1195: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1192, 1), 196607))) as usize] } - fTemp1194; + let mut iTemp1196: i32 = (fTemp730 > ((if iTemp660 != 0 {fTemp1194 + fTemp669 * fTemp1195 + (fTemp1190 - (iTemp1191) as F64) * (fTemp1193 - (fTemp1194 + fTemp669 * (fTemp1195 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1192, 4), 196607))) as usize] } - fTemp1193))))} else {1.0 - (fTemp1188 + fTemp669 * fTemp1189 + (fTemp1184 - (iTemp1185) as F64) * (fTemp1187 - (fTemp1188 + fTemp669 * (fTemp1189 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1186, 4)) as usize] } - fTemp1187)))))} - fTemp1182) / (1.0 - fTemp1182))) as i32; + let mut fTemp1197: F64 = F64::min(1.0, F64::max(0.0, 0.5 * (if iTemp1196 != 0 {fTemp1169} else {fTemp1167} + if iTemp1196 != 0 {fTemp1166} else {fTemp1169}))); + self.fRec15[0] = fTemp1197; + let mut fTemp1198: F64 = 65535.0 * (1.0 - fTemp1197); + let mut iTemp1199: i32 = (fTemp1198) as i32; + let mut iTemp1200: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1199, 65535)))), 196607)); + let mut fTemp1201: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1200, 3)) as usize] }; + let mut fTemp1202: F64 = unsafe { ftbl0mydspSIG0[iTemp1200 as usize] }; + let mut fTemp1203: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1200, 1)) as usize] } - fTemp1202; + let mut fTemp1204: F64 = 65535.0 * fTemp1197; + let mut iTemp1205: i32 = (fTemp1204) as i32; + let mut iTemp1206: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1205, 65535)))), 196607)); + let mut fTemp1207: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1206, 3)) as usize] }; + let mut fTemp1208: F64 = unsafe { ftbl0mydspSIG0[iTemp1206 as usize] }; + let mut fTemp1209: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1206, 1)) as usize] } - fTemp1208; + let mut fTemp1210: F64 = if iTemp660 != 0 {fTemp1208 + fTemp669 * fTemp1209 + (fTemp1204 - (iTemp1205) as F64) * (fTemp1207 - (fTemp1208 + fTemp669 * (fTemp1209 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1206, 4), 196607))) as usize] } - fTemp1207))))} else {1.0 - (fTemp1202 + fTemp669 * fTemp1203 + (fTemp1198 - (iTemp1199) as F64) * (fTemp1201 - (fTemp1202 + fTemp669 * (fTemp1203 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1200, 4), 196607))) as usize] } - fTemp1201)))))}; + let mut fTemp1211: F64 = fTemp674 + fTemp1197; + let mut fTemp1212: F64 = 65535.0 * (1.0 - fTemp1211); + let mut iTemp1213: i32 = (fTemp1212) as i32; + let mut iTemp1214: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1213, 65535)))), 196607)); + let mut fTemp1215: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1214, 3)) as usize] }; + let mut fTemp1216: F64 = unsafe { ftbl0mydspSIG0[iTemp1214 as usize] }; + let mut fTemp1217: F64 = unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1214, 1)) as usize] } - fTemp1216; + let mut fTemp1218: F64 = 65535.0 * fTemp1211; + let mut iTemp1219: i32 = (fTemp1218) as i32; + let mut iTemp1220: i32 = std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp664, i32::wrapping_mul(3, std::cmp::max(0, std::cmp::min(iTemp1219, 65535)))), 196607)); + let mut fTemp1221: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1220, 3), 196607))) as usize] }; + let mut fTemp1222: F64 = unsafe { ftbl0mydspSIG0[iTemp1220 as usize] }; + let mut fTemp1223: F64 = unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1220, 1), 196607))) as usize] } - fTemp1222; + let mut fTemp1224: F64 = fTemp634 + if ((0.001 * fTemp673) == 0.0) as i32 != 0 {fTemp659} else {fTemp659 * (if iTemp660 != 0 {fTemp1222 + fTemp669 * fTemp1223 + (fTemp1218 - (iTemp1219) as F64) * (fTemp1221 - (fTemp1222 + fTemp669 * (fTemp1223 - (unsafe { ftbl0mydspSIG0[(std::cmp::max(0, std::cmp::min(i32::wrapping_add(iTemp1220, 4), 196607))) as usize] } - fTemp1221))))} else {1.0 - (fTemp1216 + fTemp669 * fTemp1217 + (fTemp1212 - (iTemp1213) as F64) * (fTemp1215 - (fTemp1216 + fTemp669 * (fTemp1217 - (unsafe { ftbl0mydspSIG0[(i32::wrapping_add(iTemp1214, 4)) as usize] } - fTemp1215)))))} - fTemp1210) / (1.0 - fTemp1210)}; + self.fRec16[(self.IOTA0 & 8191) as usize] = if iTemp672 != 0 {F64::min(fTemp1224, fTemp634)} else {F64::max(fTemp1224, fTemp634)}; + let mut fTemp1225: F64 = self.fRec16[((i32::wrapping_sub(self.IOTA0, iSlow70)) & 8191) as usize]; + self.fHbargraph2 = 2e+01 * F64::log10(F64::max(2.2250738585072014e-308, fTemp1225)); + *output1 = 0.5 * fTemp2 * self.fVec2[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] + self.fRec14[0] * fTemp4 * self.fVec3[((i32::wrapping_sub(self.IOTA0, iSlow71)) & 32767) as usize] * fTemp1225; + *output2 = fTemp3 + fTemp633 * fTemp4; + *output3 = fTemp3 + fTemp4 * fTemp1225; self.fRec0[1] = self.fRec0[0]; self.IOTA0 = i32::wrapping_add(self.IOTA0, 1); self.fRec4[1] = self.fRec4[0]; diff --git a/src/lib.rs b/src/lib.rs index c4a32b0..92737b1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -24,6 +24,8 @@ pub struct Lamb { accum_buffer: TempBuffer, temp_output_buffer_l: Box<[f64]>, temp_output_buffer_r: Box<[f64]>, + temp_output_buffer_gr_l: Box<[f64]>, + temp_output_buffer_gr_r: Box<[f64]>, /// sample rate sample_rate: f32, @@ -57,6 +59,8 @@ impl Default for Lamb { temp_output_buffer_l : f64::default_boxed_array::(), temp_output_buffer_r : f64::default_boxed_array::(), + temp_output_buffer_gr_l : f64::default_boxed_array::(), + temp_output_buffer_gr_r : f64::default_boxed_array::(), sample_rate: 48000.0, peak_buffer: Arc::new(Mutex::new(PeakBuffer::new(800, 48000.0, 10.0))), } @@ -200,12 +204,6 @@ impl Plugin for Lamb { .unwrap() .enqueue_buffer(buffer, None); } - // } - - // To save resources, a plugin can (and probably should!) only perform expensive - // calculations that are only displayed on the GUI while the GUI is open - // if self.params.editor_state.is_open() { - // } let output = buffer.as_slice(); let bypass: f64 = match self.params.bypass.value() { @@ -252,6 +250,8 @@ impl Plugin for Lamb { &mut [ &mut self.temp_output_buffer_l, &mut self.temp_output_buffer_r, + &mut self.temp_output_buffer_gr_l, + &mut self.temp_output_buffer_gr_r, ], ); From 3a6b74953752b054dd588db90abd654b6a58bf41 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Tue, 16 Apr 2024 22:19:49 +0200 Subject: [PATCH 06/28] wip GR graph --- src/lib.rs | 117 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 70 insertions(+), 47 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 92737b1..fed776b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,6 +22,7 @@ pub struct Lamb { params: Arc, dsp: Box, accum_buffer: TempBuffer, + // gr_buffer: TempBuffer, temp_output_buffer_l: Box<[f64]>, temp_output_buffer_r: Box<[f64]>, temp_output_buffer_gr_l: Box<[f64]>, @@ -56,6 +57,7 @@ impl Default for Lamb { dsp: dsp::LambRs::default_boxed(), accum_buffer: TempBuffer::default(), + // gr_buffer: TempBuffer::default(), temp_output_buffer_l : f64::default_boxed_array::(), temp_output_buffer_r : f64::default_boxed_array::(), @@ -121,6 +123,7 @@ impl Plugin for Lamb { // function if you do not need it. self.dsp.init(buffer_config.sample_rate as i32); self.accum_buffer.resize(2, MAX_SOUNDCARD_BUFFER_SIZE); + // self.gr_buffer.resize(2, MAX_SOUNDCARD_BUFFER_SIZE); // After `PEAK_METER_DECAY_MS` milliseconds of pure silence, the peak meter's value should // have dropped by 12 dB @@ -199,13 +202,22 @@ impl Plugin for Lamb { .expect("no GR read") as f32, std::sync::atomic::Ordering::Relaxed, ); - self.peak_buffer - .lock() - .unwrap() - .enqueue_buffer(buffer, None); } - let output = buffer.as_slice(); + + let mut gr_buffer = Buffer::default(); + + let mut real_buffers = vec![vec![0.0; MAX_SOUNDCARD_BUFFER_SIZE]; 2]; + + unsafe { + gr_buffer.set_slices(MAX_SOUNDCARD_BUFFER_SIZE, |output_slices| { + let (first_channel, other_channels) = real_buffers.split_at_mut(1); + *output_slices = vec![&mut first_channel[0], &mut other_channels[0]]; + }) + }; + + let gr_output = gr_buffer.as_slice(); + let bypass: f64 = match self.params.bypass.value() { true => 1.0, false => 0.0, @@ -218,52 +230,63 @@ impl Plugin for Lamb { }; self.dsp.set_param(LATENCY_MODE_PI, latency_mode); self.dsp - .set_param(INPUT_GAIN_PI, self.params.input_gain.value() as f64); - self.dsp - .set_param(STRENGTH_PI, self.params.strength.value() as f64); - self.dsp - .set_param(THRESH_PI, self.params.thresh.value() as f64); - self.dsp - .set_param(ATTACK_PI, self.params.attack.value() as f64); - self.dsp - .set_param(ATTACK_SHAPE_PI, self.params.attack_shape.value() as f64); - self.dsp - .set_param(RELEASE_PI, self.params.release.value() as f64); - self.dsp - .set_param(RELEASE_SHAPE_PI, self.params.release_shape.value() as f64); - self.dsp - .set_param(RELEASE_HOLD_PI, self.params.release_hold.value() as f64); - self.dsp.set_param(KNEE_PI, self.params.knee.value() as f64); - self.dsp.set_param(LINK_PI, self.params.link.value() as f64); - self.dsp.set_param( - ADAPTIVE_RELEASE_PI, - self.params.adaptive_release.value() as f64, - ); - self.dsp - .set_param(LOOKAHEAD_PI, self.params.lookahead.value() as f64); - self.dsp - .set_param(OUTPUT_GAIN_PI, self.params.output_gain.value() as f64); - - self.dsp.compute( - count, - &self.accum_buffer.slice2d(), - &mut [ - &mut self.temp_output_buffer_l, - &mut self.temp_output_buffer_r, - &mut self.temp_output_buffer_gr_l, - &mut self.temp_output_buffer_gr_r, - ], - ); + .set_param(INPUT_GAIN_PI, self.params.input_gain.value() as f64); + self.dsp + .set_param(STRENGTH_PI, self.params.strength.value() as f64); + self.dsp + .set_param(THRESH_PI, self.params.thresh.value() as f64); + self.dsp + .set_param(ATTACK_PI, self.params.attack.value() as f64); + self.dsp + .set_param(ATTACK_SHAPE_PI, self.params.attack_shape.value() as f64); + self.dsp + .set_param(RELEASE_PI, self.params.release.value() as f64); + self.dsp + .set_param(RELEASE_SHAPE_PI, self.params.release_shape.value() as f64); + self.dsp + .set_param(RELEASE_HOLD_PI, self.params.release_hold.value() as f64); + self.dsp.set_param(KNEE_PI, self.params.knee.value() as f64); + self.dsp.set_param(LINK_PI, self.params.link.value() as f64); + self.dsp.set_param( + ADAPTIVE_RELEASE_PI, + self.params.adaptive_release.value() as f64, + ); + self.dsp + .set_param(LOOKAHEAD_PI, self.params.lookahead.value() as f64); + self.dsp + .set_param(OUTPUT_GAIN_PI, self.params.output_gain.value() as f64); + + self.dsp.compute( + count, + &self.accum_buffer.slice2d(), + &mut [ + &mut self.temp_output_buffer_l, + &mut self.temp_output_buffer_r, + &mut self.temp_output_buffer_gr_l, + &mut self.temp_output_buffer_gr_r, + ], + ); + + for i in 0..count as usize { + output[0][i] = self.temp_output_buffer_l[i] as f32; + output[1][i] = self.temp_output_buffer_r[i] as f32; + gr_output[0][i] = self.temp_output_buffer_gr_l[i] as f32; + gr_output[1][i] = self.temp_output_buffer_gr_r[i] as f32; + } - for i in 0..count as usize { - output[0][i] = self.temp_output_buffer_l[i] as f32; - output[1][i] = self.temp_output_buffer_r[i] as f32; + // To save resources, a plugin can (and probably should!) only perform expensive + // calculations that are only displayed on the GUI while the GUI is open + if self.params.editor_state.is_open() { + self.peak_buffer + .lock() + .unwrap() + .enqueue_buffer(&mut gr_buffer, None); } - let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; - context.set_latency_samples(latency_samples); + let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; + context.set_latency_samples(latency_samples); - ProcessStatus::Normal + ProcessStatus::Normal } } From 96f6bd6357976e0feeb102e3c323c9c0d5b523f2 Mon Sep 17 00:00:00 2001 From: luna <223230@proton.me> Date: Sun, 21 Apr 2024 00:13:49 +0200 Subject: [PATCH 07/28] Enqueue GR buffer using `enqueue()` --- src/lib.rs | 83 +++++++++++++----------------------------------------- 1 file changed, 19 insertions(+), 64 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fed776b..8a16b45 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -168,56 +168,6 @@ impl Plugin for Lamb { let count = buffer.samples() as i32; self.accum_buffer.read_from_buffer(buffer); - // for channel_samples in buffer.iter_samples() { - // let mut amplitude = 0.0; - // let num_samples = channel_samples.len(); - - // for sample in channel_samples { - // amplitude += *sample; - // } - - // To save resources, a plugin can (and probably should!) only perform expensive - // calculations that are only displayed on the GUI while the GUI is open - if self.params.editor_state.is_open() { - // amplitude = (amplitude / num_samples as f32).abs(); - // let current_peak_meter = self.peak_meter.load(std::sync::atomic::Ordering::Relaxed); - // let new_peak_meter = if amplitude > current_peak_meter { - // amplitude - // } else { - // current_peak_meter * self.peak_meter_decay_weight - // + amplitude * (1.0 - self.peak_meter_decay_weight) - // }; - - // self.peak_meter - // .store(new_peak_meter, std::sync::atomic::Ordering::Relaxed); - self.gain_reduction_left.store( - self.dsp - .get_param(GAIN_REDUCTION_LEFT_PI) - .expect("no GR read") as f32, - std::sync::atomic::Ordering::Relaxed, - ); - self.gain_reduction_right.store( - self.dsp - .get_param(GAIN_REDUCTION_RIGHT_PI) - .expect("no GR read") as f32, - std::sync::atomic::Ordering::Relaxed, - ); - } - let output = buffer.as_slice(); - - let mut gr_buffer = Buffer::default(); - - let mut real_buffers = vec![vec![0.0; MAX_SOUNDCARD_BUFFER_SIZE]; 2]; - - unsafe { - gr_buffer.set_slices(MAX_SOUNDCARD_BUFFER_SIZE, |output_slices| { - let (first_channel, other_channels) = real_buffers.split_at_mut(1); - *output_slices = vec![&mut first_channel[0], &mut other_channels[0]]; - }) - }; - - let gr_output = gr_buffer.as_slice(); - let bypass: f64 = match self.params.bypass.value() { true => 1.0, false => 0.0, @@ -266,28 +216,33 @@ impl Plugin for Lamb { &mut self.temp_output_buffer_gr_r, ], ); + let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; + context.set_latency_samples(latency_samples); - for i in 0..count as usize { - output[0][i] = self.temp_output_buffer_l[i] as f32; - output[1][i] = self.temp_output_buffer_r[i] as f32; - gr_output[0][i] = self.temp_output_buffer_gr_l[i] as f32; - gr_output[1][i] = self.temp_output_buffer_gr_r[i] as f32; - } + if self.params.editor_state.is_open() { + self.gain_reduction_left.store( + self.dsp + .get_param(GAIN_REDUCTION_LEFT_PI) + .expect("no GR read") as f32, + std::sync::atomic::Ordering::Relaxed, + ); + self.gain_reduction_right.store( + self.dsp + .get_param(GAIN_REDUCTION_RIGHT_PI) + .expect("no GR read") as f32, + std::sync::atomic::Ordering::Relaxed, + ); - // To save resources, a plugin can (and probably should!) only perform expensive - // calculations that are only displayed on the GUI while the GUI is open - if self.params.editor_state.is_open() { + for i in 0..count as usize { self.peak_buffer .lock() .unwrap() - .enqueue_buffer(&mut gr_buffer, None); + .enqueue((self.temp_output_buffer_gr_l[i] + self.temp_output_buffer_gr_l[i]) as f32 / 2.0); } - - let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; - context.set_latency_samples(latency_samples); + } ProcessStatus::Normal - } + } } impl ClapPlugin for Lamb { From 5900b6819790e552d658146f9158d80978e6c760 Mon Sep 17 00:00:00 2001 From: luna <223230@proton.me> Date: Sun, 21 Apr 2024 00:28:00 +0200 Subject: [PATCH 08/28] Update to latest `cyma` --- Cargo.lock | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++- src/editor.rs | 26 ++++++++--------- src/lib.rs | 6 ++-- 3 files changed, 95 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 96b943e..3c6eb00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1122,11 +1122,13 @@ dependencies = [ [[package]] name = "cyma" version = "0.1.0" -source = "git+https://github.com/223230/cyma.git#6e54760b784f3eb9437b97f10499319ccade61a9" +source = "git+https://github.com/223230/cyma.git#a58addb981374235020a7add0c904b1217f307d3" dependencies = [ "lazy_static", "nih_plug", "nih_plug_vizia", + "realfft", + "triple_buffer", ] [[package]] @@ -2408,6 +2410,15 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -2425,6 +2436,15 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.18" @@ -2838,6 +2858,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +[[package]] +name = "primal-check" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df7f93fd637f083201473dab4fee2db4c429d32e55e3299980ab3957ab916a0" +dependencies = [ + "num-integer", +] + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -2983,6 +3012,15 @@ dependencies = [ "font-types", ] +[[package]] +name = "realfft" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953d9f7e5cdd80963547b456251296efc2626ed4e3cbf36c869d9564e0220571" +dependencies = [ + "rustfft", +] + [[package]] name = "redox_syscall" version = "0.3.5" @@ -3078,6 +3116,21 @@ dependencies = [ "semver", ] +[[package]] +name = "rustfft" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43806561bc506d0c5d160643ad742e3161049ac01027b5e6d7524091fd401d86" +dependencies = [ + "num-complex", + "num-integer", + "num-traits", + "primal-check", + "strength_reduce", + "transpose", + "version_check", +] + [[package]] name = "rustix" version = "0.37.27" @@ -3332,6 +3385,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strength_reduce" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" + [[package]] name = "strsim" version = "0.11.0" @@ -3564,6 +3623,25 @@ dependencies = [ "once_cell", ] +[[package]] +name = "transpose" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" +dependencies = [ + "num-integer", + "strength_reduce", +] + +[[package]] +name = "triple_buffer" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "316e1ab00252ce5980b8a70eb50f9818f47a20d341394c56ffab88e764b3caed" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "ttf-parser" version = "0.18.1" diff --git a/src/editor.rs b/src/editor.rs index 69e0513..abbff8a 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -9,7 +9,8 @@ use std::sync::atomic::Ordering; use std::sync::{Arc, Mutex}; use cyma::{ - utils::{PeakBuffer, ValueScaling}, + utils::{MinimaBuffer}, + prelude::*, visualizers::{ Graph, Grid, Meter, UnitRuler, }, @@ -23,7 +24,7 @@ struct LambData { // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, - peak_buffer: Arc>, + peak_buffer: Arc>, } impl LambData { @@ -32,7 +33,7 @@ impl LambData { // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, - peak_buffer: Arc>, + peak_buffer: Arc>, ) -> Self { Self { params, @@ -59,7 +60,7 @@ pub(crate) fn create( // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, - peak_buffer: Arc>, + peak_buffer: Arc>, editor_state: Arc, ) -> Option> { create_vizia_editor(editor_state, ViziaTheming::Custom, move |cx, _| { @@ -399,17 +400,16 @@ fn peak_graph(cx: &mut Context) { ZStack::new(cx, |cx| { Grid::new( cx, + ValueScaling::Linear, (-32.0, 8.0), - 0.0, vec![6.0, 0.0, -6.0, -12.0, -18.0, -24.0, -30.0], + Orientation::Vertical ) - .color(Color::rgb(60, 60, 60)) - ; + .color(Color::rgb(60, 60, 60)); Graph::new(cx, LambData::peak_buffer, (-32.0, 6.0), ValueScaling::Decibels) .color(Color::rgba(0, 0, 0, 160)) - .background_color(Color::rgba(16, 16, 16, 60)) - ; + .background_color(Color::rgba(16, 16, 16, 60)); }) // .background_color(Color::rgb(16, 16, 16)) ; @@ -417,6 +417,7 @@ fn peak_graph(cx: &mut Context) { UnitRuler::new( cx, (-32.0, 8.0), + ValueScaling::Linear, vec![ (6.0, "6db"), (0.0, "0db"), @@ -439,10 +440,9 @@ fn peak_graph(cx: &mut Context) { ValueScaling::Decibels, Orientation::Vertical, ) - .width(Pixels(32.0)) - .color(Color::rgb(0, 0, 0)) - .background_color(Color::rgb(80, 80, 80)) - ; + .width(Pixels(32.0)) + .color(Color::rgb(0, 0, 0)) + .background_color(Color::rgb(80, 80, 80)); }) .top(Pixels(13.0)) // .height(Pixels(280.0)) diff --git a/src/lib.rs b/src/lib.rs index 8a16b45..eb7060e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,7 +5,7 @@ use std::sync::{Arc, Mutex}; mod buffer; mod dsp; use buffer::*; -use cyma::utils::{PeakBuffer, VisualizerBuffer}; +use cyma::utils::{MinimaBuffer, VisualizerBuffer}; use default_boxed::DefaultBoxed; @@ -42,7 +42,7 @@ pub struct Lamb { gain_reduction_right: Arc, // These buffers will hold the sample data for the visualizers. - peak_buffer: Arc>, + peak_buffer: Arc>, } impl Default for Lamb { fn default() -> Self { @@ -64,7 +64,7 @@ impl Default for Lamb { temp_output_buffer_gr_l : f64::default_boxed_array::(), temp_output_buffer_gr_r : f64::default_boxed_array::(), sample_rate: 48000.0, - peak_buffer: Arc::new(Mutex::new(PeakBuffer::new(800, 48000.0, 10.0))), + peak_buffer: Arc::new(Mutex::new(MinimaBuffer::new(800, 10.0, 10.0))), } } } From 3dc049eb3307b47acd92153769b2be4a6f450ba9 Mon Sep 17 00:00:00 2001 From: luna <223230@proton.me> Date: Sun, 21 Apr 2024 00:43:01 +0200 Subject: [PATCH 09/28] Correctly name GR buffer --- src/editor.rs | 19 ++++++++++--------- src/lib.rs | 10 +++++----- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index abbff8a..8647665 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -24,7 +24,7 @@ struct LambData { // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, - peak_buffer: Arc>, + gr_buffer: Arc>, } impl LambData { @@ -33,14 +33,14 @@ impl LambData { // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, - peak_buffer: Arc>, + gr_buffer: Arc>, ) -> Self { Self { params, // peak_meter, gain_reduction_left, gain_reduction_right, - peak_buffer, + gr_buffer, } } } @@ -60,7 +60,7 @@ pub(crate) fn create( // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, - peak_buffer: Arc>, + gr_buffer: Arc>, editor_state: Arc, ) -> Option> { create_vizia_editor(editor_state, ViziaTheming::Custom, move |cx, _| { @@ -76,7 +76,7 @@ pub(crate) fn create( // peak_meter: peak_meter.clone(), gain_reduction_left: gain_reduction_left.clone(), gain_reduction_right: gain_reduction_right.clone(), - peak_buffer: peak_buffer.clone(), + gr_buffer: gr_buffer.clone(), } .build(cx); @@ -407,9 +407,10 @@ fn peak_graph(cx: &mut Context) { ) .color(Color::rgb(60, 60, 60)); - Graph::new(cx, LambData::peak_buffer, (-32.0, 6.0), ValueScaling::Decibels) - .color(Color::rgba(0, 0, 0, 160)) - .background_color(Color::rgba(16, 16, 16, 60)); + Graph::new(cx, LambData::gr_buffer, (-32.0, 0.0), ValueScaling::Decibels) + .color(Color::rgba(160, 0, 0, 160)) + .background_color(Color::rgba(255, 16, 16, 60)) + .should_fill_from_top(true); }) // .background_color(Color::rgb(16, 16, 16)) ; @@ -435,7 +436,7 @@ fn peak_graph(cx: &mut Context) { Meter::new( cx, - LambData::peak_buffer, + LambData::gr_buffer, (-32.0, 6.0), ValueScaling::Decibels, Orientation::Vertical, diff --git a/src/lib.rs b/src/lib.rs index eb7060e..02ce69a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,7 +42,7 @@ pub struct Lamb { gain_reduction_right: Arc, // These buffers will hold the sample data for the visualizers. - peak_buffer: Arc>, + gr_buffer: Arc>, } impl Default for Lamb { fn default() -> Self { @@ -64,7 +64,7 @@ impl Default for Lamb { temp_output_buffer_gr_l : f64::default_boxed_array::(), temp_output_buffer_gr_r : f64::default_boxed_array::(), sample_rate: 48000.0, - peak_buffer: Arc::new(Mutex::new(MinimaBuffer::new(800, 10.0, 10.0))), + gr_buffer: Arc::new(Mutex::new(MinimaBuffer::new(800, 10.0, 0.0))), } } } @@ -133,7 +133,7 @@ impl Plugin for Lamb { self.sample_rate = buffer_config.sample_rate; - match self.peak_buffer.lock() { + match self.gr_buffer.lock() { Ok(mut buffer) => { buffer.set_sample_rate(buffer_config.sample_rate); } @@ -154,7 +154,7 @@ impl Plugin for Lamb { // self.peak_meter.clone(), self.gain_reduction_left.clone(), self.gain_reduction_right.clone(), - self.peak_buffer.clone(), + self.gr_buffer.clone(), self.params.editor_state.clone(), ) } @@ -234,7 +234,7 @@ impl Plugin for Lamb { ); for i in 0..count as usize { - self.peak_buffer + self.gr_buffer .lock() .unwrap() .enqueue((self.temp_output_buffer_gr_l[i] + self.temp_output_buffer_gr_l[i]) as f32 / 2.0); From ba56e6e0222c09b946f013fa01ab0901ffc3dd2c Mon Sep 17 00:00:00 2001 From: luna <223230@proton.me> Date: Sun, 21 Apr 2024 00:43:34 +0200 Subject: [PATCH 10/28] Appropriately style GR meter --- src/editor.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 8647665..b874097 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -15,6 +15,7 @@ use cyma::{ Graph, Grid, Meter, UnitRuler, }, }; +use cyma::visualizers::GraphModifiers; include!("gain_reduction_meter.rs"); @@ -401,8 +402,8 @@ fn peak_graph(cx: &mut Context) { Grid::new( cx, ValueScaling::Linear, - (-32.0, 8.0), - vec![6.0, 0.0, -6.0, -12.0, -18.0, -24.0, -30.0], + (-32.0, 0.0), + vec![-6.0, -12.0, -18.0, -24.0, -30.0], Orientation::Vertical ) .color(Color::rgb(60, 60, 60)); @@ -417,11 +418,9 @@ fn peak_graph(cx: &mut Context) { UnitRuler::new( cx, - (-32.0, 8.0), + (-32.0, 0.0), ValueScaling::Linear, vec![ - (6.0, "6db"), - (0.0, "0db"), (-6.0, "-6db"), (-12.0, "-12db"), (-18.0, "-18db"), From bd060af600fb19bf0a7cbc4cddde8d65c612c4e2 Mon Sep 17 00:00:00 2001 From: luna <223230@proton.me> Date: Sun, 21 Apr 2024 01:56:49 +0200 Subject: [PATCH 11/28] Fill GR curve from 0dB --- Cargo.lock | 2 +- src/editor.rs | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3c6eb00..8626756 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1122,7 +1122,7 @@ dependencies = [ [[package]] name = "cyma" version = "0.1.0" -source = "git+https://github.com/223230/cyma.git#a58addb981374235020a7add0c904b1217f307d3" +source = "git+https://github.com/223230/cyma.git#f62bde104887b4b43d4f81f01624077ba8444e4f" dependencies = [ "lazy_static", "nih_plug", diff --git a/src/editor.rs b/src/editor.rs index b874097..c3ed3d0 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -402,25 +402,26 @@ fn peak_graph(cx: &mut Context) { Grid::new( cx, ValueScaling::Linear, - (-32.0, 0.0), - vec![-6.0, -12.0, -18.0, -24.0, -30.0], + (-32.0, 6.0), + vec![0.0, -6.0, -12.0, -18.0, -24.0, -30.0], Orientation::Vertical ) .color(Color::rgb(60, 60, 60)); - Graph::new(cx, LambData::gr_buffer, (-32.0, 0.0), ValueScaling::Decibels) + Graph::new(cx, LambData::gr_buffer, (-32.0, 6.0), ValueScaling::Decibels) .color(Color::rgba(160, 0, 0, 160)) .background_color(Color::rgba(255, 16, 16, 60)) - .should_fill_from_top(true); + .fill_from(0.0); }) // .background_color(Color::rgb(16, 16, 16)) ; UnitRuler::new( cx, - (-32.0, 0.0), + (-32.0, 6.0), ValueScaling::Linear, vec![ + (-0.0, "0db"), (-6.0, "-6db"), (-12.0, "-12db"), (-18.0, "-18db"), From bdfc6c0142ea35f1a4d12a98fcf63305df7bec78 Mon Sep 17 00:00:00 2001 From: luna <223230@proton.me> Date: Sun, 21 Apr 2024 02:08:35 +0200 Subject: [PATCH 12/28] Re-add output Must've gotten deleted on accident before :/ --- src/lib.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 02ce69a..de62146 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -218,6 +218,12 @@ impl Plugin for Lamb { ); let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; context.set_latency_samples(latency_samples); + + let output = buffer.as_slice(); + for i in 0..count as usize { + output[0][i] = self.temp_output_buffer_l[i] as f32; + output[1][i] = self.temp_output_buffer_r[i] as f32; + } if self.params.editor_state.is_open() { self.gain_reduction_left.store( From 9aa6d104de2e704712e3a308f1f8917f1084f132 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 13:51:51 +0200 Subject: [PATCH 13/28] add level graph --- src/editor.rs | 62 ++++++++++++++++++++++++++++++++++++--------------- src/lib.rs | 28 +++++++++++++---------- 2 files changed, 60 insertions(+), 30 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index c3ed3d0..9bc00da 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -8,23 +8,25 @@ use nih_plug_vizia::{assets, create_vizia_editor, ViziaState, ViziaTheming}; use std::sync::atomic::Ordering; use std::sync::{Arc, Mutex}; +use cyma::visualizers::GraphModifiers; use cyma::{ - utils::{MinimaBuffer}, prelude::*, - visualizers::{ - Graph, Grid, Meter, UnitRuler, - }, + utils::{MinimaBuffer, PeakBuffer}, + visualizers::{Graph, Grid, Meter, UnitRuler}, }; -use cyma::visualizers::GraphModifiers; include!("gain_reduction_meter.rs"); +const METER_MIN: f32 = -32.0; +const METER_MAX: f32 = 0.0; + #[derive(Lens, Clone)] struct LambData { params: Arc, // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, + level_buffer: Arc>, gr_buffer: Arc>, } @@ -34,6 +36,7 @@ impl LambData { // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, + level_buffer: Arc>, gr_buffer: Arc>, ) -> Self { Self { @@ -41,6 +44,7 @@ impl LambData { // peak_meter, gain_reduction_left, gain_reduction_right, + level_buffer, gr_buffer, } } @@ -61,6 +65,7 @@ pub(crate) fn create( // peak_meter: Arc, gain_reduction_left: Arc, gain_reduction_right: Arc, + level_buffer: Arc>, gr_buffer: Arc>, editor_state: Arc, ) -> Option> { @@ -77,6 +82,7 @@ pub(crate) fn create( // peak_meter: peak_meter.clone(), gain_reduction_left: gain_reduction_left.clone(), gain_reduction_right: gain_reduction_right.clone(), + level_buffer: level_buffer.clone(), gr_buffer: gr_buffer.clone(), } .build(cx); @@ -402,13 +408,19 @@ fn peak_graph(cx: &mut Context) { Grid::new( cx, ValueScaling::Linear, - (-32.0, 6.0), + (METER_MIN, METER_MAX), vec![0.0, -6.0, -12.0, -18.0, -24.0, -30.0], Orientation::Vertical ) .color(Color::rgb(60, 60, 60)); - Graph::new(cx, LambData::gr_buffer, (-32.0, 6.0), ValueScaling::Decibels) + // level + Graph::new(cx, LambData::level_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) + .color(Color::rgba(60, 60, 60, 160)) + .background_color(Color::rgba(60, 60, 60, 60)); + + // gain reduction + Graph::new(cx, LambData::gr_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) .color(Color::rgba(160, 0, 0, 160)) .background_color(Color::rgba(255, 16, 16, 60)) .fill_from(0.0); @@ -418,7 +430,7 @@ fn peak_graph(cx: &mut Context) { UnitRuler::new( cx, - (-32.0, 6.0), + (METER_MIN, METER_MAX), ValueScaling::Linear, vec![ (-0.0, "0db"), @@ -433,23 +445,37 @@ fn peak_graph(cx: &mut Context) { .font_size(12.) .color(Color::rgb(160, 160, 160)) .width(Pixels(32.)); - Meter::new( cx, - LambData::gr_buffer, - (-32.0, 6.0), + LambData::level_buffer, + (METER_MIN, METER_MAX), ValueScaling::Decibels, Orientation::Vertical, ) .width(Pixels(32.0)) - .color(Color::rgb(0, 0, 0)) - .background_color(Color::rgb(80, 80, 80)); + .color(Color::rgba(60, 60, 60, 160)) + .background_color(Color::rgba(60, 60, 60, 60)); + + HStack::new(cx, |cx| { + Meter::new( + cx, + LambData::gr_buffer, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(160, 0, 0, 160)); + }) + .width(Pixels(32.0)) + .background_color(Color::rgb(251, 195, 195)); + // .background_color(Color::rgba(160, 0, 0, 60)); }) .top(Pixels(13.0)) // .height(Pixels(280.0)) - .height(Pixels(200.0)) - .width(Percentage(100.0)) - .col_between(Pixels(8.)) - .border_color(Color::rgb(80, 80, 80)) - .border_width(Pixels(1.)); + .height(Pixels(200.0)) + .width(Percentage(100.0)) + .col_between(Pixels(8.)) + .border_color(Color::rgb(80, 80, 80)) + .border_width(Pixels(1.)); } diff --git a/src/lib.rs b/src/lib.rs index de62146..3d4a52b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,7 +5,7 @@ use std::sync::{Arc, Mutex}; mod buffer; mod dsp; use buffer::*; -use cyma::utils::{MinimaBuffer, VisualizerBuffer}; +use cyma::utils::{PeakBuffer, MinimaBuffer, VisualizerBuffer}; use default_boxed::DefaultBoxed; @@ -22,7 +22,6 @@ pub struct Lamb { params: Arc, dsp: Box, accum_buffer: TempBuffer, - // gr_buffer: TempBuffer, temp_output_buffer_l: Box<[f64]>, temp_output_buffer_r: Box<[f64]>, temp_output_buffer_gr_l: Box<[f64]>, @@ -42,6 +41,7 @@ pub struct Lamb { gain_reduction_right: Arc, // These buffers will hold the sample data for the visualizers. + level_buffer: Arc>, gr_buffer: Arc>, } impl Default for Lamb { @@ -57,13 +57,13 @@ impl Default for Lamb { dsp: dsp::LambRs::default_boxed(), accum_buffer: TempBuffer::default(), - // gr_buffer: TempBuffer::default(), temp_output_buffer_l : f64::default_boxed_array::(), temp_output_buffer_r : f64::default_boxed_array::(), temp_output_buffer_gr_l : f64::default_boxed_array::(), temp_output_buffer_gr_r : f64::default_boxed_array::(), sample_rate: 48000.0, + level_buffer: Arc::new(Mutex::new(PeakBuffer::new(800, 10.0, 0.0))), gr_buffer: Arc::new(Mutex::new(MinimaBuffer::new(800, 10.0, 0.0))), } } @@ -123,14 +123,6 @@ impl Plugin for Lamb { // function if you do not need it. self.dsp.init(buffer_config.sample_rate as i32); self.accum_buffer.resize(2, MAX_SOUNDCARD_BUFFER_SIZE); - // self.gr_buffer.resize(2, MAX_SOUNDCARD_BUFFER_SIZE); - - // After `PEAK_METER_DECAY_MS` milliseconds of pure silence, the peak meter's value should - // have dropped by 12 dB - // self.peak_meter_decay_weight = 0.25f64 - // .powf((buffer_config.sample_rate as f64 * PEAK_METER_DECAY_MS / 1000.0).recip()) - // as f32; - self.sample_rate = buffer_config.sample_rate; match self.gr_buffer.lock() { @@ -140,6 +132,13 @@ impl Plugin for Lamb { Err(_) => return false, } + match self.level_buffer.lock() { + Ok(mut buffer) => { + buffer.set_sample_rate(buffer_config.sample_rate); + } + Err(_) => return false, + } + true } @@ -154,6 +153,7 @@ impl Plugin for Lamb { // self.peak_meter.clone(), self.gain_reduction_left.clone(), self.gain_reduction_right.clone(), + self.level_buffer.clone(), self.gr_buffer.clone(), self.params.editor_state.clone(), ) @@ -243,7 +243,11 @@ impl Plugin for Lamb { self.gr_buffer .lock() .unwrap() - .enqueue((self.temp_output_buffer_gr_l[i] + self.temp_output_buffer_gr_l[i]) as f32 / 2.0); + .enqueue((self.temp_output_buffer_gr_l[i] + self.temp_output_buffer_gr_r[i]) as f32 / 2.0); + self.level_buffer + .lock() + .unwrap() + .enqueue((self.temp_output_buffer_l[i] + self.temp_output_buffer_r[i]) as f32 / 2.0); } } From 460e924b9d21d162d2a1fc073e4352080c5d17b5 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 14:49:05 +0200 Subject: [PATCH 14/28] remove old meters --- src/editor.rs | 67 ++--------- src/gain_reduction_meter.rs | 233 ------------------------------------ src/lib.rs | 34 ------ 3 files changed, 13 insertions(+), 321 deletions(-) delete mode 100644 src/gain_reduction_meter.rs diff --git a/src/editor.rs b/src/editor.rs index 9bc00da..7659bdc 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -3,6 +3,7 @@ use crate::ZoomMode; use atomic_float::AtomicF32; use nih_plug::prelude::{util, Editor}; use nih_plug_vizia::vizia::prelude::*; +use nih_plug_vizia::vizia::vg; use nih_plug_vizia::widgets::*; use nih_plug_vizia::{assets, create_vizia_editor, ViziaState, ViziaTheming}; use std::sync::atomic::Ordering; @@ -15,17 +16,12 @@ use cyma::{ visualizers::{Graph, Grid, Meter, UnitRuler}, }; -include!("gain_reduction_meter.rs"); - const METER_MIN: f32 = -32.0; const METER_MAX: f32 = 0.0; #[derive(Lens, Clone)] struct LambData { params: Arc, - // peak_meter: Arc, - gain_reduction_left: Arc, - gain_reduction_right: Arc, level_buffer: Arc>, gr_buffer: Arc>, } @@ -33,17 +29,11 @@ struct LambData { impl LambData { pub(crate) fn new( params: Arc, - // peak_meter: Arc, - gain_reduction_left: Arc, - gain_reduction_right: Arc, level_buffer: Arc>, gr_buffer: Arc>, ) -> Self { Self { params, - // peak_meter, - gain_reduction_left, - gain_reduction_right, level_buffer, gr_buffer, } @@ -62,9 +52,6 @@ pub(crate) fn default_state() -> Arc { pub(crate) fn create( params: Arc, - // peak_meter: Arc, - gain_reduction_left: Arc, - gain_reduction_right: Arc, level_buffer: Arc>, gr_buffer: Arc>, editor_state: Arc, @@ -79,9 +66,6 @@ pub(crate) fn create( LambData { params: params.clone(), - // peak_meter: peak_meter.clone(), - gain_reduction_left: gain_reduction_left.clone(), - gain_reduction_right: gain_reduction_right.clone(), level_buffer: level_buffer.clone(), gr_buffer: gr_buffer.clone(), } @@ -201,39 +185,15 @@ pub(crate) fn create( .width(Percentage(100.0)); // meters - VStack::new(cx, |cx| { - peak_graph(cx); - // Label::new(cx, "input level").class("fader-label"); - // PeakMeter::new( - // cx, - // LambData::peak_meter - // .map(|peak_meter| util::gain_to_db(peak_meter.load(Ordering::Relaxed))), - // Some(Duration::from_millis(600)), - // ); - Label::new(cx, "gain reduction left").class("fader-label"); - GainReductionMeter::new( - cx, - LambData::gain_reduction_left - .map(|gain_reduction_left| gain_reduction_left.load(Ordering::Relaxed)), - Some(Duration::from_millis(600)), - ) - .width(Percentage(100.0)); - Label::new(cx, "gain reduction right").class("fader-label"); - GainReductionMeter::new( - cx, - LambData::gain_reduction_right - .map(|gain_reduction_right| gain_reduction_right.load(Ordering::Relaxed)), - Some(Duration::from_millis(600)), - ) - .width(Percentage(100.0)); - }) // meters - .width(Percentage(100.0)) - // .height(Percentage(100.0)) - .height(Auto) - .class("center"); // meters + // VStack::new(cx, |cx| { + peak_graph(cx); + // }) // meters + // .width(Percentage(100.0)) + // .height(Auto) + // .class("center"); // meters }) // everything .width(Percentage(95.0)) - // .height(Percentage(95.0)) + // .height(Percentage(95.0)) .height(Auto) .left(Percentage(2.5)) .right(Percentage(2.5)) @@ -472,10 +432,9 @@ fn peak_graph(cx: &mut Context) { // .background_color(Color::rgba(160, 0, 0, 60)); }) .top(Pixels(13.0)) - // .height(Pixels(280.0)) - .height(Pixels(200.0)) - .width(Percentage(100.0)) - .col_between(Pixels(8.)) - .border_color(Color::rgb(80, 80, 80)) - .border_width(Pixels(1.)); + .height(Pixels(330.0)) + .width(Percentage(100.0)) + .col_between(Pixels(8.)) + .border_color(Color::rgb(80, 80, 80)) + .border_width(Pixels(1.)); } diff --git a/src/gain_reduction_meter.rs b/src/gain_reduction_meter.rs deleted file mode 100644 index d901c3f..0000000 --- a/src/gain_reduction_meter.rs +++ /dev/null @@ -1,233 +0,0 @@ -use nih_plug_vizia::vizia::vg; -use std::cell::Cell; -use std::time::Instant; - -/// The thickness of a tick inside of the peak meter's bar. -const TICK_WIDTH: f32 = 1.0; -/// The gap between individual ticks. -const TICK_GAP: f32 = 1.0; - -/// The decibel value corresponding to the very left of the bar. -const MIN_TICK: f32 = -24.0; -/// The decibel value corresponding to the very right of the bar. -const MAX_TICK: f32 = 0.0; -/// The ticks that will be shown beneath the peak meter's bar. The first value is shown as -/// -infinity, and at the last position we'll draw the `dBFS` string. -// const TEXT_TICKS: [i32; 6] = [-80, -60, -40, -20, 0, 12]; -// const TEXT_TICKS: [i32; 5] = [-24, -18, -12, -6, 0]; -const TEXT_TICKS: [i32; 9] = [-24, -21, -18, -15, -12, -9, -6, -3, 0]; - -/// A simple horizontal peak meter. -/// -/// TODO: There are currently no styling options at all -/// TODO: Vertical peak meter, this is just a proof of concept to fit the gain GUI example. -pub struct GainReductionMeter; - -/// The bar bit for the peak meter, manually drawn using vertical lines. -struct GainReductionMeterBar -where - L: Lens, - P: Lens, -{ - level_dbfs: L, - peak_dbfs: P, -} - -impl GainReductionMeter { - /// Creates a new [`GainReductionMeter`] for the given value in decibel, optionally holding the peak - /// value for a certain amount of time. - pub fn new(cx: &mut Context, level_dbfs: L, hold_time: Option) -> Handle - where - L: Lens, - { - Self.build(cx, |cx| { - // Now for something that may be illegal under some jurisdictions. If a hold time is - // given, then we'll build a new lens that always gives the held peak level for the - // current moment in time by mutating some values captured into the mapping closure. - let held_peak_value_db = Cell::new(f32::MIN); - let last_held_peak_value: Cell> = Cell::new(None); - let peak_dbfs = level_dbfs.map(move |level| -> f32 { - match hold_time { - Some(hold_time) => { - let mut peak_level = held_peak_value_db.get(); - let peak_time = last_held_peak_value.get(); - - let now = Instant::now(); - if *level >= peak_level - || peak_time.is_none() - || now > peak_time.unwrap() + hold_time - { - peak_level = *level; - held_peak_value_db.set(peak_level); - last_held_peak_value.set(Some(now)); - } - - peak_level - } - None => util::MINUS_INFINITY_DB, - } - }); - - GainReductionMeterBar { - level_dbfs, - peak_dbfs, - } - .build(cx, |_| {}) - .class("bar"); - - ZStack::new(cx, |cx| { - const WIDTH_PCT: f32 = 50.0; - for tick_db in TEXT_TICKS { - let tick_fraction = (tick_db as f32 - MIN_TICK) / (MAX_TICK - MIN_TICK); - let tick_pct = tick_fraction * 100.0; - - ZStack::new(cx, |cx| { - let first_tick = tick_db == TEXT_TICKS[0]; - let last_tick = tick_db == TEXT_TICKS[TEXT_TICKS.len() - 1]; - - if !last_tick { - // FIXME: This is not aligned to the pixel grid and some ticks will look - // blurry, is there a way to fix this? - Element::new(cx).class("ticks__tick"); - } - - if first_tick { - Label::new(cx, &MIN_TICK.to_string()) - .class("ticks__label") - .class("ticks__label--inf") - } else if last_tick { - // This is only inclued in the array to make positioning this easier - Label::new(cx, "0 dBFS") - .class("ticks__label") - .class("ticks__label--dbfs") - } else { - Label::new(cx, &tick_db.to_string()).class("ticks__label") - } - .overflow(Overflow::Visible); - }) - .height(Stretch(1.0)) - .left(Percentage(tick_pct - (WIDTH_PCT / 2.0))) - .width(Percentage(WIDTH_PCT)) - .child_left(Stretch(1.0)) - .child_right(Stretch(1.0)) - .overflow(Overflow::Visible); - } - }) - .class("ticks") - .overflow(Overflow::Visible); - }) - .overflow(Overflow::Visible) - } -} - -impl View for GainReductionMeter { - fn element(&self) -> Option<&'static str> { - Some("peak-meter") - } -} - -impl View for GainReductionMeterBar -where - L: Lens, - P: Lens, -{ - fn draw(&self, cx: &mut DrawContext, canvas: &mut Canvas) { - let level_dbfs = self.level_dbfs.get(cx); - let peak_dbfs = self.peak_dbfs.get(cx); - - // These basics are taken directly from the default implementation of this function - let bounds = cx.bounds(); - if bounds.w == 0.0 || bounds.h == 0.0 { - return; - } - - // TODO: It would be cool to allow the text color property to control the gradient here. For - // now we'll only support basic background colors and borders. - let background_color = cx.background_color(); - let border_color = cx.border_color(); - let opacity = cx.opacity(); - let mut background_color: vg::Color = background_color.into(); - background_color.set_alphaf(background_color.a * opacity); - let mut border_color: vg::Color = border_color.into(); - border_color.set_alphaf(border_color.a * opacity); - let border_width = cx.border_width(); - - let mut path = vg::Path::new(); - { - let x = bounds.x + border_width / 2.0; - let y = bounds.y + border_width / 2.0; - let w = bounds.w - border_width; - let h = bounds.h - border_width; - path.move_to(x, y); - path.line_to(x, y + h); - path.line_to(x + w, y + h); - path.line_to(x + w, y); - path.line_to(x, y); - path.close(); - } - - // Fill with background color - let paint = vg::Paint::color(background_color); - canvas.fill_path(&path, &paint); - - // And now for the fun stuff. We'll try to not overlap the border, but we'll draw that last - // just in case. - let bar_bounds = bounds.shrink(border_width / 2.0); - let bar_ticks_start_x = bar_bounds.left().floor() as i32; - let bar_ticks_end_x = bar_bounds.right().ceil() as i32; - - // NOTE: We'll scale this with the nearest integer DPI ratio. That way it will still look - // good at 2x scaling, and it won't look blurry at 1.x times scaling. - let dpi_scale = cx.logical_to_physical(1.0).floor().max(1.0); - let bar_tick_coordinates = (bar_ticks_start_x..bar_ticks_end_x) - .step_by(((TICK_WIDTH + TICK_GAP) * dpi_scale).round() as usize); - for tick_x in bar_tick_coordinates { - let tick_fraction = - (tick_x - bar_ticks_start_x) as f32 / (bar_ticks_end_x - bar_ticks_start_x) as f32; - let tick_db = (tick_fraction * (MAX_TICK - MIN_TICK)) + MIN_TICK; - if tick_db > level_dbfs { - break; - } - - // femtovg draws paths centered on these coordinates, so in order to be pixel perfect we - // need to account for that. Otherwise the ticks will be 2px wide instead of 1px. - let mut path = vg::Path::new(); - path.move_to(tick_x as f32 + (dpi_scale / 2.0), bar_bounds.top()); - path.line_to(tick_x as f32 + (dpi_scale / 2.0), bar_bounds.bottom()); - - let grayscale_color = 0.3 + ((1.0 - tick_fraction) * 0.5); - let mut paint = vg::Paint::color(vg::Color::rgbaf( - grayscale_color, - grayscale_color, - grayscale_color, - opacity, - )); - paint.set_line_width(TICK_WIDTH * dpi_scale); - canvas.stroke_path(&path, &paint); - } - - // Draw the hold peak value if the hold time option has been set - let db_to_x_coord = |db: f32| { - let tick_fraction = (db - MIN_TICK) / (MAX_TICK - MIN_TICK); - bar_ticks_start_x as f32 - + ((bar_ticks_end_x - bar_ticks_start_x) as f32 * tick_fraction).round() - }; - if (MIN_TICK..MAX_TICK).contains(&peak_dbfs) { - // femtovg draws paths centered on these coordinates, so in order to be pixel perfect we - // need to account for that. Otherwise the ticks will be 2px wide instead of 1px. - let peak_x = db_to_x_coord(peak_dbfs); - let mut path = vg::Path::new(); - path.move_to(peak_x + (dpi_scale / 2.0), bar_bounds.top()); - path.line_to(peak_x + (dpi_scale / 2.0), bar_bounds.bottom()); - - let mut paint = vg::Paint::color(vg::Color::rgbaf(0.3, 0.3, 0.3, opacity)); - paint.set_line_width(TICK_WIDTH * dpi_scale); - canvas.stroke_path(&path, &paint); - } - - // Draw border last - let mut paint = vg::Paint::color(border_color); - paint.set_line_width(border_width); - canvas.stroke_path(&path, &paint); - } -} diff --git a/src/lib.rs b/src/lib.rs index 3d4a52b..eee6f8c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,9 +15,6 @@ const MAX_SOUNDCARD_BUFFER_SIZE: usize = 32768; mod editor; -/// The time it takes for the peak meter to decay by 12 dB after switching to complete silence. -// const PEAK_METER_DECAY_MS: f64 = 150.0; - pub struct Lamb { params: Arc, dsp: Box, @@ -29,16 +26,6 @@ pub struct Lamb { /// sample rate sample_rate: f32, - /// Needed to normalize the peak meter's response based on the sample rate. - peak_meter_decay_weight: f32, - /// The current data for the peak meter. This is stored as an [`Arc`] so we can share it between - /// the GUI and the audio processing parts. If you have more state to share, then it's a good - /// idea to put all of that in a struct behind a single `Arc`. - /// - /// This is stored as voltage gain. - // peak_meter: Arc, - gain_reduction_left: Arc, - gain_reduction_right: Arc, // These buffers will hold the sample data for the visualizers. level_buffer: Arc>, @@ -49,11 +36,6 @@ impl Default for Lamb { Self { params: Arc::new(LambParams::default()), - peak_meter_decay_weight: 1.0, - // peak_meter: Arc::new(AtomicF32::new(util::MINUS_INFINITY_DB)), - gain_reduction_left: Arc::new(AtomicF32::new(0.0)), - gain_reduction_right: Arc::new(AtomicF32::new(0.0)), - dsp: dsp::LambRs::default_boxed(), accum_buffer: TempBuffer::default(), @@ -150,9 +132,6 @@ impl Plugin for Lamb { fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { editor::create( self.params.clone(), - // self.peak_meter.clone(), - self.gain_reduction_left.clone(), - self.gain_reduction_right.clone(), self.level_buffer.clone(), self.gr_buffer.clone(), self.params.editor_state.clone(), @@ -226,19 +205,6 @@ impl Plugin for Lamb { } if self.params.editor_state.is_open() { - self.gain_reduction_left.store( - self.dsp - .get_param(GAIN_REDUCTION_LEFT_PI) - .expect("no GR read") as f32, - std::sync::atomic::Ordering::Relaxed, - ); - self.gain_reduction_right.store( - self.dsp - .get_param(GAIN_REDUCTION_RIGHT_PI) - .expect("no GR read") as f32, - std::sync::atomic::Ordering::Relaxed, - ); - for i in 0..count as usize { self.gr_buffer .lock() From ec30cfe7488f1b21758491d99a54b59fbe26e76d Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 14:49:31 +0200 Subject: [PATCH 15/28] update rust --- shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index c2ca5d5..e8484ed 100644 --- a/shell.nix +++ b/shell.nix @@ -18,7 +18,7 @@ in with nixpkgs; name = "moz_overlay_shell"; nativeBuildInputs = [ pkg-config clang lld ]; buildInputs = [ - (nixpkgs.rustChannelOf { date = "2024-03-17"; channel = "nightly"; }).rust + (nixpkgs.rustChannelOf { date = "2024-04-20"; channel = "nightly"; }).rust rustup pkg-config From 5eae5df570c2f31545f23105546b5c819f72346d Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 14:51:40 +0200 Subject: [PATCH 16/28] cargo fix --lib -p lamb --- src/editor.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 7659bdc..2cbf66d 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -1,12 +1,10 @@ use crate::LambParams; use crate::ZoomMode; -use atomic_float::AtomicF32; -use nih_plug::prelude::{util, Editor}; +use nih_plug::prelude::{Editor}; use nih_plug_vizia::vizia::prelude::*; use nih_plug_vizia::vizia::vg; use nih_plug_vizia::widgets::*; use nih_plug_vizia::{assets, create_vizia_editor, ViziaState, ViziaTheming}; -use std::sync::atomic::Ordering; use std::sync::{Arc, Mutex}; use cyma::visualizers::GraphModifiers; From bd27fa861c5b78463c73f1418749c4cfa771c201 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 15:45:01 +0200 Subject: [PATCH 17/28] put ruler outside border --- src/editor.rs | 105 +++++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 2cbf66d..148c2da 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -1,6 +1,6 @@ use crate::LambParams; use crate::ZoomMode; -use nih_plug::prelude::{Editor}; +use nih_plug::prelude::Editor; use nih_plug_vizia::vizia::prelude::*; use nih_plug_vizia::vizia::vg; use nih_plug_vizia::widgets::*; @@ -151,7 +151,6 @@ pub(crate) fn create( .class("center") .left(Percentage(2.5)); }) - // .height(Percentage(100.0)) .height(Auto) .width(Percentage(100.0)); // level + time @@ -182,20 +181,13 @@ pub(crate) fn create( .height(Auto) .width(Percentage(100.0)); - // meters - // VStack::new(cx, |cx| { peak_graph(cx); - // }) // meters - // .width(Percentage(100.0)) - // .height(Auto) - // .class("center"); // meters }) // everything - .width(Percentage(95.0)) - // .height(Percentage(95.0)) - .height(Auto) - .left(Percentage(2.5)) - .right(Percentage(2.5)) - .class("center"); + .width(Percentage(95.0)) + .height(Auto) + .left(Percentage(2.5)) + .right(Percentage(2.5)) + .class("center"); ResizeHandle::new(cx); }) } @@ -362,47 +354,31 @@ impl>> View /// Draws a peak graph with a grid backdrop, unit ruler, and a peak meter to side. fn peak_graph(cx: &mut Context) { HStack::new(cx, |cx| { - ZStack::new(cx, |cx| { - Grid::new( - cx, - ValueScaling::Linear, - (METER_MIN, METER_MAX), - vec![0.0, -6.0, -12.0, -18.0, -24.0, -30.0], - Orientation::Vertical - ) - .color(Color::rgb(60, 60, 60)); + HStack::new(cx, |cx| { + ZStack::new(cx, |cx| { + Grid::new( + cx, + ValueScaling::Linear, + (METER_MIN, METER_MAX), + vec![0.0, -6.0, -12.0, -18.0, -24.0, -30.0], + Orientation::Vertical + ) + .color(Color::rgb(60, 60, 60)); - // level - Graph::new(cx, LambData::level_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) - .color(Color::rgba(60, 60, 60, 160)) - .background_color(Color::rgba(60, 60, 60, 60)); + // level + Graph::new(cx, LambData::level_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) + .color(Color::rgba(60, 60, 60, 160)) + .background_color(Color::rgba(60, 60, 60, 60)); - // gain reduction - Graph::new(cx, LambData::gr_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) - .color(Color::rgba(160, 0, 0, 160)) - .background_color(Color::rgba(255, 16, 16, 60)) - .fill_from(0.0); - }) - // .background_color(Color::rgb(16, 16, 16)) + // gain reduction + Graph::new(cx, LambData::gr_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) + .color(Color::rgba(160, 0, 0, 160)) + .background_color(Color::rgba(255, 16, 16, 60)) + .fill_from(0.0); + }) + // .background_color(Color::rgb(16, 16, 16)) ; - UnitRuler::new( - cx, - (METER_MIN, METER_MAX), - ValueScaling::Linear, - vec![ - (-0.0, "0db"), - (-6.0, "-6db"), - (-12.0, "-12db"), - (-18.0, "-18db"), - (-24.0, "-24db"), - (-30.0, "-30db"), - ], - Orientation::Vertical, - ) - .font_size(12.) - .color(Color::rgb(160, 160, 160)) - .width(Pixels(32.)); Meter::new( cx, LambData::level_buffer, @@ -428,11 +404,34 @@ fn peak_graph(cx: &mut Context) { .width(Pixels(32.0)) .background_color(Color::rgb(251, 195, 195)); // .background_color(Color::rgba(160, 0, 0, 60)); + }) + .border_color(Color::rgb(80, 80, 80)) + .border_width(Pixels(1.)) + ; + UnitRuler::new( + cx, + (METER_MIN, METER_MAX), + ValueScaling::Linear, + vec![ + (-0.0, "0db"), + (-6.0, "-6db"), + (-12.0, "-12db"), + (-18.0, "-18db"), + (-24.0, "-24db"), + (-30.0, "-30db"), + ], + Orientation::Vertical, + ) + .font_size(12.) + .color(Color::rgb(160, 160, 160)) + .width(Pixels(32.)) + ; }) .top(Pixels(13.0)) .height(Pixels(330.0)) .width(Percentage(100.0)) .col_between(Pixels(8.)) - .border_color(Color::rgb(80, 80, 80)) - .border_width(Pixels(1.)); + .border_color(Color::rgba(0, 0, 0, 0)) + .border_width(Pixels(1.)) + ; } From 8bab802826aad9c372820180216c1f5b870819ea Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 16:18:36 +0200 Subject: [PATCH 18/28] graph: smaller range, narrower meters --- src/editor.rs | 101 +++++++++++++++++++++++++------------------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 148c2da..52fd1be 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -14,7 +14,7 @@ use cyma::{ visualizers::{Graph, Grid, Meter, UnitRuler}, }; -const METER_MIN: f32 = -32.0; +const METER_MIN: f32 = -26.0; const METER_MAX: f32 = 0.0; #[derive(Lens, Clone)] @@ -145,11 +145,11 @@ pub(crate) fn create( ParamSlider::new(cx, LambData::params, |params| { ¶ms.adaptive_release }) - .set_style(ParamSliderStyle::FromLeft); + .set_style(ParamSliderStyle::FromLeft); }) // time - .height(Auto) - .class("center") - .left(Percentage(2.5)); + .height(Auto) + .class("center") + .left(Percentage(2.5)); }) .height(Auto) .width(Percentage(100.0)); // level + time @@ -183,11 +183,11 @@ pub(crate) fn create( peak_graph(cx); }) // everything - .width(Percentage(95.0)) - .height(Auto) - .left(Percentage(2.5)) - .right(Percentage(2.5)) - .class("center"); + .width(Percentage(95.0)) + .height(Auto) + .left(Percentage(2.5)) + .right(Percentage(2.5)) + .class("center"); ResizeHandle::new(cx); }) } @@ -360,54 +360,58 @@ fn peak_graph(cx: &mut Context) { cx, ValueScaling::Linear, (METER_MIN, METER_MAX), - vec![0.0, -6.0, -12.0, -18.0, -24.0, -30.0], - Orientation::Vertical + vec![0.0, -6.0, -12.0, -18.0, -24.0], + Orientation::Vertical, ) - .color(Color::rgb(60, 60, 60)); + .color(Color::rgb(60, 60, 60)); // level - Graph::new(cx, LambData::level_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) - .color(Color::rgba(60, 60, 60, 160)) - .background_color(Color::rgba(60, 60, 60, 60)); + Graph::new( + cx, + LambData::level_buffer, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(60, 60, 60, 160)) + .background_color(Color::rgba(60, 60, 60, 60)); // gain reduction - Graph::new(cx, LambData::gr_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels) - .color(Color::rgba(160, 0, 0, 160)) - .background_color(Color::rgba(255, 16, 16, 60)) - .fill_from(0.0); + Graph::new( + cx, + LambData::gr_buffer, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(160, 0, 0, 160)) + .background_color(Color::rgba(255, 16, 16, 60)) + .fill_from(0.0); + }); + HStack::new(cx, |cx| { + Meter::new( + cx, + LambData::gr_buffer, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(160, 0, 0, 160)); }) - // .background_color(Color::rgb(16, 16, 16)) - ; - - Meter::new( - cx, - LambData::level_buffer, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - Orientation::Vertical, - ) - .width(Pixels(32.0)) - .color(Color::rgba(60, 60, 60, 160)) - .background_color(Color::rgba(60, 60, 60, 60)); - - HStack::new(cx, |cx| { + .width(Pixels(15.0)) + .background_color(Color::rgb(251, 195, 195)); Meter::new( cx, - LambData::gr_buffer, + LambData::level_buffer, (METER_MIN, METER_MAX), ValueScaling::Decibels, Orientation::Vertical, ) - .background_color(Color::rgb(250, 250, 250)) - .color(Color::rgba(160, 0, 0, 160)); - }) - .width(Pixels(32.0)) - .background_color(Color::rgb(251, 195, 195)); - // .background_color(Color::rgba(160, 0, 0, 60)); + .width(Pixels(15.0)) + .color(Color::rgba(60, 60, 60, 160)) + .background_color(Color::rgba(60, 60, 60, 60)); }) .border_color(Color::rgb(80, 80, 80)) - .border_width(Pixels(1.)) - ; + .border_width(Pixels(1.)); UnitRuler::new( cx, (METER_MIN, METER_MAX), @@ -418,20 +422,17 @@ fn peak_graph(cx: &mut Context) { (-12.0, "-12db"), (-18.0, "-18db"), (-24.0, "-24db"), - (-30.0, "-30db"), ], Orientation::Vertical, ) .font_size(12.) .color(Color::rgb(160, 160, 160)) - .width(Pixels(32.)) - ; + .width(Pixels(32.)); }) .top(Pixels(13.0)) - .height(Pixels(330.0)) + .height(Pixels(333.0)) .width(Percentage(100.0)) .col_between(Pixels(8.)) .border_color(Color::rgba(0, 0, 0, 0)) - .border_width(Pixels(1.)) - ; + .border_width(Pixels(1.)); } From 69408e2a25e169697065fe9545ca898d459648fb Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 16:29:14 +0200 Subject: [PATCH 19/28] update credits --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f88292a..dd5f917 100644 --- a/README.md +++ b/README.md @@ -105,10 +105,12 @@ Therefore, Windows users currently need to build faust from source to be able to This plugin would not have been possible without the following projects: - [Faust](http://faust.grame.fr) -- [nih-plug](https://github.com/robbert-vdh/nih-plug) +- [NIH-plug](https://github.com/robbert-vdh/nih-plug) - [lowpass-lr4-faust-nih-plug](https://codeberg.org/obsoleszenz/lowpass-lr4-faust-nih-plug) +- [Vizia](https://github.com/vizia/vizia) +- [Cyma](https://github.com/223230/cyma) -I would like to thank @sletz, @robbert-vdh, @obsoleszenz and @dariosanfilippo for their fantastic support and feedback! +I would like to thank [Stéphane Letz](https://github.com/sletz), [Robbert van der Helm](https://github.com/robbert-vdh), [obsoleszenz](https://github.com/obsoleszenz), [luna](https://github.com/223230), [Dr George Atkinson](https://github.com/geom3trik) and [Dario Sanfilippo](https://github.com/dariosanfilippo) for their fantastic support and feedback! 🐑 From 76fdb1a0b5a000fa9f8eeb6cb91e659052f2ac3a Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Sun, 21 Apr 2024 18:49:30 +0200 Subject: [PATCH 20/28] tweak look --- src/editor.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 52fd1be..b2f50e6 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -361,9 +361,9 @@ fn peak_graph(cx: &mut Context) { ValueScaling::Linear, (METER_MIN, METER_MAX), vec![0.0, -6.0, -12.0, -18.0, -24.0], - Orientation::Vertical, + Orientation::Horizontal, ) - .color(Color::rgb(60, 60, 60)); + .color(Color::rgba(160, 160, 160, 60)); // level Graph::new( @@ -426,13 +426,11 @@ fn peak_graph(cx: &mut Context) { Orientation::Vertical, ) .font_size(12.) - .color(Color::rgb(160, 160, 160)) + .color(Color::rgb(30, 30, 30)) .width(Pixels(32.)); }) - .top(Pixels(13.0)) - .height(Pixels(333.0)) + .top(Pixels(20.0)) + .height(Pixels(326.0)) .width(Percentage(100.0)) - .col_between(Pixels(8.)) - .border_color(Color::rgba(0, 0, 0, 0)) - .border_width(Pixels(1.)); + .col_between(Pixels(8.)); } From 74ecad3ea3be95dedb99eae0e3a58c9f75d91bb5 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 22 Apr 2024 15:37:41 +0200 Subject: [PATCH 21/28] make meters stereo --- src/editor.rs | 94 +++++++++++++++++++++++++++++++++++++++------------ src/lib.rs | 52 +++++++++++++++++++++------- 2 files changed, 113 insertions(+), 33 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index b2f50e6..b05537b 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -20,20 +20,26 @@ const METER_MAX: f32 = 0.0; #[derive(Lens, Clone)] struct LambData { params: Arc, - level_buffer: Arc>, - gr_buffer: Arc>, + level_buffer_l: Arc>, + level_buffer_r: Arc>, + gr_buffer_l: Arc>, + gr_buffer_r: Arc>, } impl LambData { pub(crate) fn new( params: Arc, - level_buffer: Arc>, - gr_buffer: Arc>, + level_buffer_l: Arc>, + level_buffer_r: Arc>, + gr_buffer_l: Arc>, + gr_buffer_r: Arc>, ) -> Self { Self { params, - level_buffer, - gr_buffer, + level_buffer_l, + level_buffer_r, + gr_buffer_l, + gr_buffer_r, } } } @@ -50,8 +56,10 @@ pub(crate) fn default_state() -> Arc { pub(crate) fn create( params: Arc, - level_buffer: Arc>, - gr_buffer: Arc>, + level_buffer_l: Arc>, + level_buffer_r: Arc>, + gr_buffer_l: Arc>, + gr_buffer_r: Arc>, editor_state: Arc, ) -> Option> { create_vizia_editor(editor_state, ViziaTheming::Custom, move |cx, _| { @@ -64,8 +72,10 @@ pub(crate) fn create( LambData { params: params.clone(), - level_buffer: level_buffer.clone(), - gr_buffer: gr_buffer.clone(), + level_buffer_l: level_buffer_l.clone(), + level_buffer_r: level_buffer_r.clone(), + gr_buffer_l: gr_buffer_l.clone(), + gr_buffer_r: gr_buffer_r.clone(), } .build(cx); @@ -368,40 +378,81 @@ fn peak_graph(cx: &mut Context) { // level Graph::new( cx, - LambData::level_buffer, + LambData::level_buffer_l, (METER_MIN, METER_MAX), ValueScaling::Decibels, ) - .color(Color::rgba(60, 60, 60, 160)) - .background_color(Color::rgba(60, 60, 60, 60)); + .color(Color::rgba(60, 60, 60, 30)) + .background_color(Color::rgba(60, 60, 60, 20)); + + Graph::new( + cx, + LambData::level_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(60, 60, 60, 30)) + .background_color(Color::rgba(60, 60, 60, 20)); // gain reduction Graph::new( cx, - LambData::gr_buffer, + LambData::gr_buffer_l, (METER_MIN, METER_MAX), ValueScaling::Decibels, ) - .color(Color::rgba(160, 0, 0, 160)) - .background_color(Color::rgba(255, 16, 16, 60)) - .fill_from(0.0); + .color(Color::rgba(0, 0, 255, 125)) + .background_color(Color::rgba(0, 0, 255, 20)) + .fill_from(0.0); + Graph::new( + cx, + LambData::gr_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(255, 0, 0, 125)) + .background_color(Color::rgba(255, 0, 0, 20)) + .fill_from(0.0); }); HStack::new(cx, |cx| { Meter::new( cx, - LambData::gr_buffer, + LambData::gr_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(0, 0, 255, 60)); + }) + .width(Pixels(15.0)) + .background_color(Color::rgb(192, 192, 251)); + HStack::new(cx, |cx| { + Meter::new( + cx, + LambData::gr_buffer_r, (METER_MIN, METER_MAX), ValueScaling::Decibels, Orientation::Vertical, ) .background_color(Color::rgb(250, 250, 250)) - .color(Color::rgba(160, 0, 0, 160)); + .color(Color::rgba(255, 0, 0, 60)); }) .width(Pixels(15.0)) - .background_color(Color::rgb(251, 195, 195)); + .background_color(Color::rgb(251, 192, 192)); + Meter::new( + cx, + LambData::level_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .width(Pixels(15.0)) + .color(Color::rgba(60, 60, 60, 160)) + .background_color(Color::rgba(60, 60, 60, 60)); Meter::new( cx, - LambData::level_buffer, + LambData::level_buffer_r, (METER_MIN, METER_MAX), ValueScaling::Decibels, Orientation::Vertical, @@ -410,6 +461,7 @@ fn peak_graph(cx: &mut Context) { .color(Color::rgba(60, 60, 60, 160)) .background_color(Color::rgba(60, 60, 60, 60)); }) + // .width(Pixels(30.0)) .border_color(Color::rgb(80, 80, 80)) .border_width(Pixels(1.)); UnitRuler::new( diff --git a/src/lib.rs b/src/lib.rs index eee6f8c..2c97270 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -28,8 +28,10 @@ pub struct Lamb { sample_rate: f32, // These buffers will hold the sample data for the visualizers. - level_buffer: Arc>, - gr_buffer: Arc>, + level_buffer_l: Arc>, + level_buffer_r: Arc>, + gr_buffer_l: Arc>, + gr_buffer_r: Arc>, } impl Default for Lamb { fn default() -> Self { @@ -45,8 +47,10 @@ impl Default for Lamb { temp_output_buffer_gr_l : f64::default_boxed_array::(), temp_output_buffer_gr_r : f64::default_boxed_array::(), sample_rate: 48000.0, - level_buffer: Arc::new(Mutex::new(PeakBuffer::new(800, 10.0, 0.0))), - gr_buffer: Arc::new(Mutex::new(MinimaBuffer::new(800, 10.0, 0.0))), + level_buffer_l: Arc::new(Mutex::new(PeakBuffer::new(1068, 7.0, 0.0))), + level_buffer_r: Arc::new(Mutex::new(PeakBuffer::new(1068, 7.0, 0.0))), + gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1068, 7.0, 0.0))), + gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1068, 7.0, 0.0))), } } } @@ -107,14 +111,28 @@ impl Plugin for Lamb { self.accum_buffer.resize(2, MAX_SOUNDCARD_BUFFER_SIZE); self.sample_rate = buffer_config.sample_rate; - match self.gr_buffer.lock() { + match self.level_buffer_l.lock() { Ok(mut buffer) => { buffer.set_sample_rate(buffer_config.sample_rate); } Err(_) => return false, } - match self.level_buffer.lock() { + match self.level_buffer_r.lock() { + Ok(mut buffer) => { + buffer.set_sample_rate(buffer_config.sample_rate); + } + Err(_) => return false, + } + + match self.gr_buffer_l.lock() { + Ok(mut buffer) => { + buffer.set_sample_rate(buffer_config.sample_rate); + } + Err(_) => return false, + } + + match self.gr_buffer_r.lock() { Ok(mut buffer) => { buffer.set_sample_rate(buffer_config.sample_rate); } @@ -132,8 +150,10 @@ impl Plugin for Lamb { fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { editor::create( self.params.clone(), - self.level_buffer.clone(), - self.gr_buffer.clone(), + self.level_buffer_l.clone(), + self.level_buffer_r.clone(), + self.gr_buffer_l.clone(), + self.gr_buffer_r.clone(), self.params.editor_state.clone(), ) } @@ -206,14 +226,22 @@ impl Plugin for Lamb { if self.params.editor_state.is_open() { for i in 0..count as usize { - self.gr_buffer + self.level_buffer_l + .lock() + .unwrap() + .enqueue(self.temp_output_buffer_l[i] as f32 ); + self.level_buffer_r + .lock() + .unwrap() + .enqueue(self.temp_output_buffer_r[i] as f32 ); + self.gr_buffer_l .lock() .unwrap() - .enqueue((self.temp_output_buffer_gr_l[i] + self.temp_output_buffer_gr_r[i]) as f32 / 2.0); - self.level_buffer + .enqueue(self.temp_output_buffer_gr_l[i]as f32 ); + self.gr_buffer_r .lock() .unwrap() - .enqueue((self.temp_output_buffer_l[i] + self.temp_output_buffer_r[i]) as f32 / 2.0); + .enqueue(self.temp_output_buffer_gr_r[i]as f32 ); } } From 4a19fffc8506bc26a4a24aa3641715c4628773a1 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 22 Apr 2024 16:44:41 +0200 Subject: [PATCH 22/28] tweak colors --- src/editor.rs | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index b05537b..e82f992 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -382,8 +382,8 @@ fn peak_graph(cx: &mut Context) { (METER_MIN, METER_MAX), ValueScaling::Decibels, ) - .color(Color::rgba(60, 60, 60, 30)) - .background_color(Color::rgba(60, 60, 60, 20)); + .color(Color::rgba(0, 0, 255, 30)) + .background_color(Color::rgba(0, 0, 0, 40)); Graph::new( cx, @@ -391,8 +391,8 @@ fn peak_graph(cx: &mut Context) { (METER_MIN, METER_MAX), ValueScaling::Decibels, ) - .color(Color::rgba(60, 60, 60, 30)) - .background_color(Color::rgba(60, 60, 60, 20)); + .color(Color::rgba(255, 0, 0, 30)) + .background_color(Color::rgba(0, 0, 0, 40)); // gain reduction Graph::new( @@ -401,19 +401,20 @@ fn peak_graph(cx: &mut Context) { (METER_MIN, METER_MAX), ValueScaling::Decibels, ) - .color(Color::rgba(0, 0, 255, 125)) - .background_color(Color::rgba(0, 0, 255, 20)) - .fill_from(0.0); + .color(Color::rgba(0, 0, 255, 255)) + .background_color(Color::rgba(250, 250, 250, 40)) + .fill_from(0.0); Graph::new( cx, LambData::gr_buffer_r, (METER_MIN, METER_MAX), ValueScaling::Decibels, ) - .color(Color::rgba(255, 0, 0, 125)) - .background_color(Color::rgba(255, 0, 0, 20)) - .fill_from(0.0); + .color(Color::rgba(255, 0, 0, 255)) + .background_color(Color::rgba(250, 250, 250, 40)) + .fill_from(0.0); }); + // gain reduction HStack::new(cx, |cx| { Meter::new( cx, @@ -422,11 +423,11 @@ fn peak_graph(cx: &mut Context) { ValueScaling::Decibels, Orientation::Vertical, ) - .background_color(Color::rgb(250, 250, 250)) - .color(Color::rgba(0, 0, 255, 60)); + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(0, 0, 255, 255)); }) - .width(Pixels(15.0)) - .background_color(Color::rgb(192, 192, 251)); + .width(Pixels(15.0)) + .background_color(Color::rgb(220, 220, 220)); HStack::new(cx, |cx| { Meter::new( cx, @@ -435,11 +436,12 @@ fn peak_graph(cx: &mut Context) { ValueScaling::Decibels, Orientation::Vertical, ) - .background_color(Color::rgb(250, 250, 250)) - .color(Color::rgba(255, 0, 0, 60)); + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(255, 0, 0, 255)); }) .width(Pixels(15.0)) - .background_color(Color::rgb(251, 192, 192)); + .background_color(Color::rgb(220, 220, 220)); + // level Meter::new( cx, LambData::level_buffer_l, @@ -448,7 +450,7 @@ fn peak_graph(cx: &mut Context) { Orientation::Vertical, ) .width(Pixels(15.0)) - .color(Color::rgba(60, 60, 60, 160)) + .color(Color::rgba(0, 0, 255, 125)) .background_color(Color::rgba(60, 60, 60, 60)); Meter::new( cx, @@ -458,7 +460,7 @@ fn peak_graph(cx: &mut Context) { Orientation::Vertical, ) .width(Pixels(15.0)) - .color(Color::rgba(60, 60, 60, 160)) + .color(Color::rgba(255, 0, 0, 125)) .background_color(Color::rgba(60, 60, 60, 60)); }) // .width(Pixels(30.0)) From d110904b4eea8d27b7c8d75d109f7d4cc741d867 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 22 Apr 2024 17:34:34 +0200 Subject: [PATCH 23/28] switch to a three colomn layout --- src/editor.rs | 53 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index e82f992..084d19f 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -50,8 +50,7 @@ impl Model for LambData {} pub(crate) fn default_state() -> Arc { // width , height // ViziaState::new(|| (((16.0 / 9.0) * 720.0) as u32, 720)) - // ViziaState::new(|| (1280, 960)) - ViziaState::new(|| (1200, 900)) + ViziaState::new(|| (1280, 720)) } pub(crate) fn create( @@ -92,9 +91,9 @@ pub(crate) fn create( Label::new(cx, "input gain").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.input_gain) .bottom(Pixels(6.0)); - // level + time + // three colomns HStack::new(cx, |cx| { - // level + // first VStack::new(cx, |cx| { HStack::new(cx, |cx| { // bypass and latency_mode @@ -130,15 +129,29 @@ pub(crate) fn create( ParamSlider::new(cx, LambData::params, |params| ¶ms.thresh); Label::new(cx, "knee").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.knee); - Label::new(cx, "link").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| ¶ms.link); + }) // first + .height(Auto) + .class("center") + .right(Percentage(2.5)); + // second + VStack::new(cx, |cx| { Label::new(cx, "lookahead").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.lookahead); - }) // level + Label::new(cx, "link").class("fader-label"); + ParamSlider::new(cx, LambData::params, |params| ¶ms.link); + Label::new(cx, "release hold").class("fader-label"); + ParamSlider::new(cx, LambData::params, |params| ¶ms.release_hold); + Label::new(cx, "adaptive release").class("fader-label"); + ParamSlider::new(cx, LambData::params, |params| { + ¶ms.adaptive_release + }) + .set_style(ParamSliderStyle::FromLeft); + }) // second .height(Auto) .class("center") - .right(Percentage(2.5)); - // time + .left(Percentage(1.25)) + .right(Percentage(1.25)); + // third VStack::new(cx, |cx| { Label::new(cx, "attack").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.attack); @@ -149,25 +162,19 @@ pub(crate) fn create( Label::new(cx, "release shape").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.release_shape) .set_style(ParamSliderStyle::FromLeft); - Label::new(cx, "release hold").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| ¶ms.release_hold); - Label::new(cx, "adaptive release").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| { - ¶ms.adaptive_release - }) - .set_style(ParamSliderStyle::FromLeft); - }) // time + }) // third .height(Auto) .class("center") .left(Percentage(2.5)); }) .height(Auto) - .width(Percentage(100.0)); // level + time + .width(Percentage(100.0)); // three colomns Label::new(cx, "output gain").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.output_gain) .bottom(Pixels(6.0)); }) // parameters + .width(Percentage(75.0)) .height(Auto) .right(Percentage(2.5)) .class("center"); @@ -183,7 +190,12 @@ pub(crate) fn create( .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) .bottom(Pixels(6.0)); Label::new(cx, "").class("fader-label"); // spacer - AttackReleaseGraph::new(cx, LambData::params).height(Pixels(373.0)); + AttackReleaseGraph::new(cx, LambData::params).height(Pixels(200.0)); + // .height(Pixels(260.0)); + Label::new(cx, "zoom mode").class("fader-label"); + ParamSlider::new(cx, LambData::params, |params| ¶ms.zoom_mode) + .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) + .bottom(Pixels(6.0)); }) // graph + zoom .height(Auto) .class("center"); @@ -463,7 +475,6 @@ fn peak_graph(cx: &mut Context) { .color(Color::rgba(255, 0, 0, 125)) .background_color(Color::rgba(60, 60, 60, 60)); }) - // .width(Pixels(30.0)) .border_color(Color::rgb(80, 80, 80)) .border_width(Pixels(1.)); UnitRuler::new( @@ -484,7 +495,7 @@ fn peak_graph(cx: &mut Context) { .width(Pixels(32.)); }) .top(Pixels(20.0)) - .height(Pixels(326.0)) + .height(Pixels(260.0)) .width(Percentage(100.0)) .col_between(Pixels(8.)); } From e133e7d4a9530b7d10a905bd3f232467d31d0479 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Mon, 22 Apr 2024 21:54:58 +0200 Subject: [PATCH 24/28] make graph zoomable --- src/editor.rs | 7 ++++--- src/lib.rs | 56 ++++++++++++++++++++++++++++++++++++--------------- src/params.rs | 49 +++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 90 insertions(+), 22 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 084d19f..c7f141a 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -192,9 +192,9 @@ pub(crate) fn create( Label::new(cx, "").class("fader-label"); // spacer AttackReleaseGraph::new(cx, LambData::params).height(Pixels(200.0)); // .height(Pixels(260.0)); - Label::new(cx, "zoom mode").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| ¶ms.zoom_mode) - .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) + Label::new(cx, "GR graph time scale").class("fader-label"); + ParamSlider::new(cx, LambData::params, |params| ¶ms.time_scale) + .set_style(ParamSliderStyle::CurrentStep{ even: true }) .bottom(Pixels(6.0)); }) // graph + zoom .height(Auto) @@ -213,6 +213,7 @@ pub(crate) fn create( ResizeHandle::new(cx); }) } + /////////////////////////////////////////////////////////////////////////////// // AttackReleaseGraph // /////////////////////////////////////////////////////////////////////////////// diff --git a/src/lib.rs b/src/lib.rs index 2c97270..0fd9fb5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,7 +5,7 @@ use std::sync::{Arc, Mutex}; mod buffer; mod dsp; use buffer::*; -use cyma::utils::{PeakBuffer, MinimaBuffer, VisualizerBuffer}; +use cyma::utils::{MinimaBuffer, PeakBuffer, VisualizerBuffer}; use default_boxed::DefaultBoxed; @@ -32,25 +32,30 @@ pub struct Lamb { level_buffer_r: Arc>, gr_buffer_l: Arc>, gr_buffer_r: Arc>, + + /// If this is set at the start of the processing cycle, then the graph duration should be updated. + should_update_time_scale: Arc, } impl Default for Lamb { fn default() -> Self { + let should_update_time_scale = Arc::new(AtomicBool::new(false)); Self { - params: Arc::new(LambParams::default()), - + params: Arc::new(LambParams::new(should_update_time_scale.clone())), + // params: Arc::new(LambParams::default()), dsp: dsp::LambRs::default_boxed(), accum_buffer: TempBuffer::default(), - temp_output_buffer_l : f64::default_boxed_array::(), - temp_output_buffer_r : f64::default_boxed_array::(), - temp_output_buffer_gr_l : f64::default_boxed_array::(), - temp_output_buffer_gr_r : f64::default_boxed_array::(), + temp_output_buffer_l: f64::default_boxed_array::(), + temp_output_buffer_r: f64::default_boxed_array::(), + temp_output_buffer_gr_l: f64::default_boxed_array::(), + temp_output_buffer_gr_r: f64::default_boxed_array::(), sample_rate: 48000.0, - level_buffer_l: Arc::new(Mutex::new(PeakBuffer::new(1068, 7.0, 0.0))), - level_buffer_r: Arc::new(Mutex::new(PeakBuffer::new(1068, 7.0, 0.0))), - gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1068, 7.0, 0.0))), - gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1068, 7.0, 0.0))), + level_buffer_l: Arc::new(Mutex::new(PeakBuffer::new(1114, 7.0, 0.0))), + level_buffer_r: Arc::new(Mutex::new(PeakBuffer::new(1114, 7.0, 0.0))), + gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), + gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), + should_update_time_scale, } } } @@ -145,6 +150,7 @@ impl Plugin for Lamb { fn reset(&mut self) { // Reset buffers and envelopes here. This can be called from the audio thread and may not // allocate. You can remove this function if you do not need it. + self.should_update_time_scale.store(true, Ordering::Release); } fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { @@ -217,7 +223,7 @@ impl Plugin for Lamb { ); let latency_samples = self.dsp.get_param(LATENCY_PI).expect("no latency read") as u32; context.set_latency_samples(latency_samples); - + let output = buffer.as_slice(); for i in 0..count as usize { output[0][i] = self.temp_output_buffer_l[i] as f32; @@ -225,23 +231,41 @@ impl Plugin for Lamb { } if self.params.editor_state.is_open() { + if self.should_update_time_scale.load(Ordering::Relaxed) { + let time_scale = match self.params.time_scale.value() { + TimeScale::HalfSec => 0.5, + TimeScale::OneSec => 1.0, + TimeScale::TwoSec => 2.0, + TimeScale::FourSec => 4.0, + TimeScale::EightSec => 8.0, + TimeScale::SixteenSec => 16.0, + TimeScale::ThirtytwoSec => 32.0, + TimeScale::SixtyfourSec => 64.0, + }; + self.level_buffer_l.lock().unwrap().set_duration(time_scale); + self.level_buffer_r.lock().unwrap().set_duration(time_scale); + self.gr_buffer_l.lock().unwrap().set_duration(time_scale); + self.gr_buffer_r.lock().unwrap().set_duration(time_scale); + self.should_update_time_scale + .store(false, Ordering::Release); + }; for i in 0..count as usize { self.level_buffer_l .lock() .unwrap() - .enqueue(self.temp_output_buffer_l[i] as f32 ); + .enqueue(self.temp_output_buffer_l[i] as f32); self.level_buffer_r .lock() .unwrap() - .enqueue(self.temp_output_buffer_r[i] as f32 ); + .enqueue(self.temp_output_buffer_r[i] as f32); self.gr_buffer_l .lock() .unwrap() - .enqueue(self.temp_output_buffer_gr_l[i]as f32 ); + .enqueue(self.temp_output_buffer_gr_l[i] as f32); self.gr_buffer_r .lock() .unwrap() - .enqueue(self.temp_output_buffer_gr_r[i]as f32 ); + .enqueue(self.temp_output_buffer_gr_r[i] as f32); } } diff --git a/src/params.rs b/src/params.rs index 96969ff..082b1a9 100644 --- a/src/params.rs +++ b/src/params.rs @@ -1,4 +1,6 @@ +use std::sync::atomic::{AtomicBool, Ordering}; use faust_types::ParamIndex; + #[derive(Params)] struct LambParams { // nr of params: 12 @@ -34,6 +36,9 @@ struct LambParams { output_gain: FloatParam, #[id = "zoom_mode"] zoom_mode: EnumParam, + #[id = "time_scale"] + time_scale: EnumParam, + /// The editor state, saved together with the parameter state so the custom scaling can be /// restored. #[persist = "editor-state"] @@ -56,6 +61,34 @@ enum ZoomMode { Absolute, } +#[derive(Enum, Debug, PartialEq)] +enum TimeScale { + #[id = "0_5s"] + #[name = "0.5 seconds"] + HalfSec, + #[id = "1s"] + #[name = "1 second"] + OneSec, + #[id = "2s"] + #[name = "2 seconds"] + TwoSec, + #[id = "4s"] + #[name = "4 seconds"] + FourSec, + #[id = "8s"] + #[name = "8 seconds"] + EightSec, + #[id = "16s"] + #[name = "16 seconds"] + SixteenSec, + #[id = "32s"] + #[name = "32 seconds"] + ThirtytwoSec, + #[id = "64"] + #[name = "64 seconds"] + SixtyfourSec, +} + #[derive(Enum, Debug, PartialEq)] enum LatencyMode { /// Minimal, but variable latency @@ -132,8 +165,10 @@ pub fn ratio_to_strength() -> Arc Option + Send + Sync> { }) } -impl Default for LambParams { - fn default() -> Self { +impl LambParams { + pub fn new( + should_update_time_scale: Arc, + ) -> Self { Self { editor_state: editor::default_state(), @@ -273,6 +308,15 @@ impl Default for LambParams { zoom_mode: EnumParam::new("zoom_mode", ZoomMode::Relative) .hide() .hide_in_generic_ui(), + time_scale: EnumParam::new("time_scale", TimeScale::EightSec) + .with_callback( + { + let should_update_time_scale = should_update_time_scale.clone(); + Arc::new(move |_| should_update_time_scale.store(true, Ordering::Release)) + }, + ) + .hide() + .hide_in_generic_ui(), } } } @@ -295,4 +339,3 @@ pub const OUTPUT_GAIN_PI: ParamIndex = ParamIndex(14); pub const GAIN_REDUCTION_LEFT_PI: ParamIndex = ParamIndex(15); pub const GAIN_REDUCTION_RIGHT_PI: ParamIndex = ParamIndex(16); pub const LATENCY_PI: ParamIndex = ParamIndex(17); -pub const ZOOM_MODE_PI: ParamIndex = ParamIndex(18); From 2c311619b19ffa20d356344d720be5929e180e4d Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Tue, 23 Apr 2024 00:21:29 +0200 Subject: [PATCH 25/28] tweak look --- src/editor.rs | 172 ++++++++++++++++++++++++++++---------------------- src/params.rs | 24 +++---- 2 files changed, 107 insertions(+), 89 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index c7f141a..78c4db0 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -15,7 +15,7 @@ use cyma::{ }; const METER_MIN: f32 = -26.0; -const METER_MAX: f32 = 0.0; +const METER_MAX: f32 = 2.0; #[derive(Lens, Clone)] struct LambData { @@ -194,7 +194,7 @@ pub(crate) fn create( // .height(Pixels(260.0)); Label::new(cx, "GR graph time scale").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.time_scale) - .set_style(ParamSliderStyle::CurrentStep{ even: true }) + .set_style(ParamSliderStyle::CurrentStep { even: true }) .bottom(Pixels(6.0)); }) // graph + zoom .height(Auto) @@ -261,7 +261,8 @@ impl>> View // let border_width = cx.scale_factor() * cx.border_width(); let border_width = cx.border_width(); - let rounding = 3.0 * border_width; + // let rounding = 3.0 * border_width; + let rounding = 0.0; // Create a new `Path` from the `vg` module. let x = bounds.x + border_width / 2.0; @@ -377,107 +378,124 @@ impl>> View /// Draws a peak graph with a grid backdrop, unit ruler, and a peak meter to side. fn peak_graph(cx: &mut Context) { HStack::new(cx, |cx| { - HStack::new(cx, |cx| { - ZStack::new(cx, |cx| { - Grid::new( - cx, - ValueScaling::Linear, - (METER_MIN, METER_MAX), - vec![0.0, -6.0, -12.0, -18.0, -24.0], - Orientation::Horizontal, - ) + ZStack::new(cx, |cx| { + Grid::new( + cx, + ValueScaling::Linear, + (METER_MIN, METER_MAX), + vec![0.0, -6.0, -12.0, -18.0, -24.0], + Orientation::Horizontal, + ) .color(Color::rgba(160, 160, 160, 60)); - // level - Graph::new( - cx, - LambData::level_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) + // level + Graph::new( + cx, + LambData::level_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) .color(Color::rgba(0, 0, 255, 30)) .background_color(Color::rgba(0, 0, 0, 40)); - Graph::new( - cx, - LambData::level_buffer_r, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) + Graph::new( + cx, + LambData::level_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) .color(Color::rgba(255, 0, 0, 30)) .background_color(Color::rgba(0, 0, 0, 40)); - // gain reduction - Graph::new( - cx, - LambData::gr_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) + // gain reduction + Graph::new( + cx, + LambData::gr_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) .color(Color::rgba(0, 0, 255, 255)) .background_color(Color::rgba(250, 250, 250, 40)) .fill_from(0.0); - Graph::new( - cx, - LambData::gr_buffer_r, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) + Graph::new( + cx, + LambData::gr_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) .color(Color::rgba(255, 0, 0, 255)) .background_color(Color::rgba(250, 250, 250, 40)) .fill_from(0.0); - }); - // gain reduction + }); + + ZStack::new(cx, |cx| { HStack::new(cx, |cx| { + // gain reduction + HStack::new(cx, |cx| { + Meter::new( + cx, + LambData::gr_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(0, 0, 255, 255)); + }) + .left(Pixels(4.0)) + .width(Pixels(15.0)) + .background_color(Color::rgb(220, 220, 220)); + HStack::new(cx, |cx| { + Meter::new( + cx, + LambData::gr_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + Orientation::Vertical, + ) + .background_color(Color::rgb(250, 250, 250)) + .color(Color::rgba(255, 0, 0, 255)); + }) + .width(Pixels(15.0)) + .background_color(Color::rgb(220, 220, 220)); + // level Meter::new( cx, - LambData::gr_buffer_l, + LambData::level_buffer_l, (METER_MIN, METER_MAX), ValueScaling::Decibels, Orientation::Vertical, ) - .background_color(Color::rgb(250, 250, 250)) - .color(Color::rgba(0, 0, 255, 255)); - }) - .width(Pixels(15.0)) - .background_color(Color::rgb(220, 220, 220)); - HStack::new(cx, |cx| { + .width(Pixels(15.0)) + .color(Color::rgba(0, 0, 255, 255)) + .background_color(Color::rgba(60, 60, 60, 60)); Meter::new( cx, - LambData::gr_buffer_r, + LambData::level_buffer_r, (METER_MIN, METER_MAX), ValueScaling::Decibels, Orientation::Vertical, ) - .background_color(Color::rgb(250, 250, 250)) - .color(Color::rgba(255, 0, 0, 255)); + .width(Pixels(15.0)) + .color(Color::rgba(255, 0, 0, 255)) + .background_color(Color::rgba(60, 60, 60, 60)); }) - .width(Pixels(15.0)) - .background_color(Color::rgb(220, 220, 220)); - // level - Meter::new( - cx, - LambData::level_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - Orientation::Vertical, - ) - .width(Pixels(15.0)) - .color(Color::rgba(0, 0, 255, 125)) - .background_color(Color::rgba(60, 60, 60, 60)); - Meter::new( + .col_between(Pixels(2.)) + .width(Auto) + ; + Grid::new( cx, - LambData::level_buffer_r, + ValueScaling::Linear, (METER_MIN, METER_MAX), - ValueScaling::Decibels, - Orientation::Vertical, + vec![0.0, -6.0, -12.0, -18.0, -24.0], + Orientation::Horizontal, ) - .width(Pixels(15.0)) - .color(Color::rgba(255, 0, 0, 125)) - .background_color(Color::rgba(60, 60, 60, 60)); + .color(Color::rgba(160, 160, 160, 60)); + }) - .border_color(Color::rgb(80, 80, 80)) - .border_width(Pixels(1.)); + .width(Pixels(70.0)) + // .width(Auto) + ; UnitRuler::new( cx, (METER_MIN, METER_MAX), @@ -491,12 +509,16 @@ fn peak_graph(cx: &mut Context) { ], Orientation::Vertical, ) + .left(Pixels(2.0)) + .right(Pixels(2.0)) .font_size(12.) .color(Color::rgb(30, 30, 30)) .width(Pixels(32.)); }) + .width(Auto) + .border_color(Color::rgb(163, 163, 163)) + .border_width(Pixels(1.4)) .top(Pixels(20.0)) - .height(Pixels(260.0)) - .width(Percentage(100.0)) - .col_between(Pixels(8.)); + .height(Pixels(255.0)) + .width(Percentage(100.0)); } diff --git a/src/params.rs b/src/params.rs index 082b1a9..006975e 100644 --- a/src/params.rs +++ b/src/params.rs @@ -1,5 +1,5 @@ -use std::sync::atomic::{AtomicBool, Ordering}; use faust_types::ParamIndex; +use std::sync::atomic::{AtomicBool, Ordering}; #[derive(Params)] struct LambParams { @@ -166,9 +166,7 @@ pub fn ratio_to_strength() -> Arc Option + Send + Sync> { } impl LambParams { - pub fn new( - should_update_time_scale: Arc, - ) -> Self { + pub fn new(should_update_time_scale: Arc) -> Self { Self { editor_state: editor::default_state(), @@ -251,9 +249,9 @@ impl LambParams { max: 50.0, }, ) - .with_unit(" ms") - .with_step_size(0.01) - .non_automatable(), + .with_unit(" ms") + .with_step_size(0.01) + .non_automatable(), knee: FloatParam::new( "knee", 1.0, @@ -308,13 +306,11 @@ impl LambParams { zoom_mode: EnumParam::new("zoom_mode", ZoomMode::Relative) .hide() .hide_in_generic_ui(), - time_scale: EnumParam::new("time_scale", TimeScale::EightSec) - .with_callback( - { - let should_update_time_scale = should_update_time_scale.clone(); - Arc::new(move |_| should_update_time_scale.store(true, Ordering::Release)) - }, - ) + time_scale: EnumParam::new("time_scale", TimeScale::FourSec) + .with_callback({ + let should_update_time_scale = should_update_time_scale.clone(); + Arc::new(move |_| should_update_time_scale.store(true, Ordering::Release)) + }) .hide() .hide_in_generic_ui(), } From 202898f587d70804ba0147128f7ad5e42f9c3b8d Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Wed, 24 Apr 2024 11:31:34 +0200 Subject: [PATCH 26/28] switch between pre and post, WIP left/right --- src/editor.rs | 163 +++++++++++++++++++++++++++++--------------------- src/lib.rs | 69 ++++++++++++++++++--- src/params.rs | 63 ++++++++++++++++++- 3 files changed, 216 insertions(+), 79 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index 78c4db0..cfd66bc 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -95,34 +95,35 @@ pub(crate) fn create( HStack::new(cx, |cx| { // first VStack::new(cx, |cx| { + // bypass and latency_mode HStack::new(cx, |cx| { - // bypass and latency_mode + // label & slider VStack::new(cx, |cx| { - // label & slider Label::new(cx, "bypass").class("fader-label"); ParamButton::new(cx, LambData::params, |params| ¶ms.bypass) .with_label("") .for_bypass() - .width(Percentage(95.0)) - .right(Percentage(5.0)); - }) // label & slider + .width(Percentage(100.0)); + // label & slider + }) .height(Auto) .class("center"); - // label & slider + // bypass and latency_mode VStack::new(cx, |cx| { Label::new(cx, "latency mode").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| { ¶ms.latency_mode }) .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) - .width(Percentage(95.0)) - .left(Percentage(5.0)); + .width(Percentage(100.0)); }) // label & slider + .width(Stretch(1.0)) .height(Auto) .class("center"); }) // bypass and latency_mode - .height(Auto) - .width(Percentage(100.0)); // level + time + .col_between(Percentage(5.0)) + .width(Percentage(100.0)) + .height(Auto); // bypass & latency_mode Label::new(cx, "ratio").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.strength); Label::new(cx, "threshold").class("fader-label"); @@ -131,8 +132,7 @@ pub(crate) fn create( ParamSlider::new(cx, LambData::params, |params| ¶ms.knee); }) // first .height(Auto) - .class("center") - .right(Percentage(2.5)); + .class("center"); // second VStack::new(cx, |cx| { Label::new(cx, "lookahead").class("fader-label"); @@ -148,9 +148,7 @@ pub(crate) fn create( .set_style(ParamSliderStyle::FromLeft); }) // second .height(Auto) - .class("center") - .left(Percentage(1.25)) - .right(Percentage(1.25)); + .class("center"); // third VStack::new(cx, |cx| { Label::new(cx, "attack").class("fader-label"); @@ -164,9 +162,9 @@ pub(crate) fn create( .set_style(ParamSliderStyle::FromLeft); }) // third .height(Auto) - .class("center") - .left(Percentage(2.5)); + .class("center"); }) + .col_between(Percentage(2.5)) .height(Auto) .width(Percentage(100.0)); // three colomns @@ -174,9 +172,10 @@ pub(crate) fn create( ParamSlider::new(cx, LambData::params, |params| ¶ms.output_gain) .bottom(Pixels(6.0)); }) // parameters - .width(Percentage(75.0)) + // .width(Percentage(72.5)) + .width(Stretch(3.0)) .height(Auto) - .right(Percentage(2.5)) + // .right(Percentage(2.5)) .class("center"); // graph + zoom VStack::new(cx, |cx| { @@ -192,24 +191,47 @@ pub(crate) fn create( Label::new(cx, "").class("fader-label"); // spacer AttackReleaseGraph::new(cx, LambData::params).height(Pixels(200.0)); // .height(Pixels(260.0)); - Label::new(cx, "GR graph time scale").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| ¶ms.time_scale) - .set_style(ParamSliderStyle::CurrentStep { even: true }) - .bottom(Pixels(6.0)); + Label::new(cx, "gain reduction graph").class("fader-label"); + HStack::new(cx, |cx| { + ParamSlider::new(cx, LambData::params, |params| ¶ms.time_scale) + .width(Stretch(1.0)) + .set_style(ParamSliderStyle::CurrentStep { even: true }) + .bottom(Pixels(6.0)); + ParamSlider::new(cx, LambData::params, |params| ¶ms.in_out) + .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) + .width(Stretch(1.0)) + .bottom(Pixels(6.0)); + HStack::new(cx, |cx| { + ParamButton::new(cx, LambData::params, |params| ¶ms.show_left) + .with_label("left") + .width(Stretch(1.0)) + .bottom(Pixels(6.0)); + ParamButton::new(cx, LambData::params, |params| ¶ms.show_right) + .with_label("right") + .width(Stretch(1.0)) + .bottom(Pixels(6.0)); + }) + .width(Stretch(1.0)) + // .width(Percentage(100.0)) + ; + }) + .width(Percentage(100.0)) + .col_between(Percentage(5.0)); }) // graph + zoom + .width(Stretch(1.0)) .height(Auto) .class("center"); }) // parameters + graph + .col_between(Percentage(2.5)) .height(Auto) .width(Percentage(100.0)); - - peak_graph(cx); + peak_graph(cx, params.show_left.value(), params.show_right.value()); }) // everything - .width(Percentage(95.0)) - .height(Auto) - .left(Percentage(2.5)) - .right(Percentage(2.5)) - .class("center"); + .width(Percentage(95.0)) + .height(Auto) + .left(Percentage(2.5)) + .right(Percentage(2.5)) + .class("center"); ResizeHandle::new(cx); }) } @@ -376,7 +398,7 @@ impl>> View } /// Draws a peak graph with a grid backdrop, unit ruler, and a peak meter to side. -fn peak_graph(cx: &mut Context) { +fn peak_graph(cx: &mut Context, show_left: bool, show_right: bool) { HStack::new(cx, |cx| { ZStack::new(cx, |cx| { Grid::new( @@ -386,46 +408,53 @@ fn peak_graph(cx: &mut Context) { vec![0.0, -6.0, -12.0, -18.0, -24.0], Orientation::Horizontal, ) - .color(Color::rgba(160, 160, 160, 60)); + .color(Color::rgba(160, 160, 160, 60)); - // level - Graph::new( - cx, - LambData::level_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) - .color(Color::rgba(0, 0, 255, 30)) - .background_color(Color::rgba(0, 0, 0, 40)); + if show_left { + println!("left"); + // level + Graph::new( + cx, + LambData::level_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(0, 0, 255, 30)) + .background_color(Color::rgba(0, 0, 0, 40)); - Graph::new( - cx, - LambData::level_buffer_r, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) + // gain reduction + Graph::new( + cx, + LambData::gr_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(0, 0, 255, 255)) + .background_color(Color::rgba(250, 250, 250, 40)) + .fill_from(0.0); + }; + if show_right { + println!("right"); + // level + Graph::new( + cx, + LambData::level_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) .color(Color::rgba(255, 0, 0, 30)) .background_color(Color::rgba(0, 0, 0, 40)); - - // gain reduction - Graph::new( - cx, - LambData::gr_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) - .color(Color::rgba(0, 0, 255, 255)) - .background_color(Color::rgba(250, 250, 250, 40)) - .fill_from(0.0); - Graph::new( - cx, - LambData::gr_buffer_r, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) - .color(Color::rgba(255, 0, 0, 255)) - .background_color(Color::rgba(250, 250, 250, 40)) - .fill_from(0.0); + // gain reduction + Graph::new( + cx, + LambData::gr_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .color(Color::rgba(255, 0, 0, 255)) + .background_color(Color::rgba(250, 250, 250, 40)) + .fill_from(0.0); + }; }); ZStack::new(cx, |cx| { diff --git a/src/lib.rs b/src/lib.rs index 0fd9fb5..2948dfd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,12 +35,20 @@ pub struct Lamb { /// If this is set at the start of the processing cycle, then the graph duration should be updated. should_update_time_scale: Arc, + should_update_show_left: Arc, + should_update_show_right: Arc, } impl Default for Lamb { fn default() -> Self { let should_update_time_scale = Arc::new(AtomicBool::new(false)); + let should_update_show_left = Arc::new(AtomicBool::new(false)); + let should_update_show_right = Arc::new(AtomicBool::new(false)); Self { - params: Arc::new(LambParams::new(should_update_time_scale.clone())), + params: Arc::new(LambParams::new( + should_update_time_scale.clone(), + should_update_show_left.clone(), + should_update_show_right.clone(), + )), // params: Arc::new(LambParams::default()), dsp: dsp::LambRs::default_boxed(), @@ -56,6 +64,8 @@ impl Default for Lamb { gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), should_update_time_scale, + should_update_show_left, + should_update_show_right, } } } @@ -151,6 +161,8 @@ impl Plugin for Lamb { // Reset buffers and envelopes here. This can be called from the audio thread and may not // allocate. You can remove this function if you do not need it. self.should_update_time_scale.store(true, Ordering::Release); + self.should_update_show_left.store(true, Ordering::Release); + self.should_update_show_right.store(true, Ordering::Release); } fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { @@ -211,6 +223,22 @@ impl Plugin for Lamb { self.dsp .set_param(OUTPUT_GAIN_PI, self.params.output_gain.value() as f64); + // works, but is out of allignment + // if self.params.editor_state.is_open() { + // if self.params.in_out.value() {} + // else { + // println!("pre"); + // self.level_buffer_l + // .lock() + // .unwrap() + // .enqueue_buffer(buffer, None); + // self.level_buffer_r + // .lock() + // .unwrap() + // .enqueue_buffer(buffer, None); + // }; + // }; + self.dsp.compute( count, &self.accum_buffer.slice2d(), @@ -249,15 +277,38 @@ impl Plugin for Lamb { self.should_update_time_scale .store(false, Ordering::Release); }; + + if self.params.in_out.value() { + for i in 0..count as usize { + self.level_buffer_l + .lock() + .unwrap() + .enqueue(self.temp_output_buffer_l[i] as f32); + self.level_buffer_r + .lock() + .unwrap() + .enqueue(self.temp_output_buffer_r[i] as f32); + } + } else { + let gain_db = + 0.0 - (self.params.input_gain.value() + self.params.output_gain.value()); + let gain = if self.params.bypass.value() { + 1.0 + } else { + 10f32.powf(gain_db / 20.0) + }; + for i in 0..count as usize { + self.level_buffer_l.lock().unwrap().enqueue( + (self.temp_output_buffer_l[i] / self.temp_output_buffer_gr_l[i]) as f32 + * gain, + ); + self.level_buffer_r.lock().unwrap().enqueue( + (self.temp_output_buffer_r[i] / self.temp_output_buffer_gr_r[i]) as f32 + * gain, + ); + } + }; for i in 0..count as usize { - self.level_buffer_l - .lock() - .unwrap() - .enqueue(self.temp_output_buffer_l[i] as f32); - self.level_buffer_r - .lock() - .unwrap() - .enqueue(self.temp_output_buffer_r[i] as f32); self.gr_buffer_l .lock() .unwrap() diff --git a/src/params.rs b/src/params.rs index 006975e..8d6e021 100644 --- a/src/params.rs +++ b/src/params.rs @@ -38,6 +38,12 @@ struct LambParams { zoom_mode: EnumParam, #[id = "time_scale"] time_scale: EnumParam, + #[id = "in_out"] + in_out: BoolParam, + #[id = "show_left"] + show_left: BoolParam, + #[id = "show_right"] + show_right: BoolParam, /// The editor state, saved together with the parameter state so the custom scaling can be /// restored. @@ -165,8 +171,41 @@ pub fn ratio_to_strength() -> Arc Option + Send + Sync> { }) } +// .with_value_to_string(bool_to_in_out()) +// .with_string_to_value(in_out_to_bool()) +// pub fn bool_to_in_out() + +/// Display 'post' or 'pre' depending on whether the parameter is true or false. +pub fn v2s_bool_in_out() -> Arc String + Send + Sync> { + Arc::new(move |value| { + if value { + String::from("post") + } else { + String::from("pre") + } + }) +} + +/// Parse a string in the same format as [`v2s_bool_in_out()`]. +pub fn s2v_bool_in_out() -> Arc Option + Send + Sync> { + Arc::new(|string| { + let string = string.trim(); + if string.eq_ignore_ascii_case("post") { + Some(true) + } else if string.eq_ignore_ascii_case("pre") { + Some(false) + } else { + None + } + }) +} + impl LambParams { - pub fn new(should_update_time_scale: Arc) -> Self { + pub fn new( + should_update_time_scale: Arc, + should_update_show_left: Arc, + should_update_show_right: Arc, + ) -> Self { Self { editor_state: editor::default_state(), @@ -194,8 +233,7 @@ impl LambParams { }, ) .with_value_to_string(strength_to_ratio()) - .with_string_to_value(ratio_to_strength()), // .with_unit(" %") - // .with_step_size(1.0) + .with_string_to_value(ratio_to_strength()), thresh: FloatParam::new( "thresh", -1.0, @@ -313,6 +351,25 @@ impl LambParams { }) .hide() .hide_in_generic_ui(), + in_out: BoolParam::new("in_out", true) + .with_value_to_string(v2s_bool_in_out()) + .with_string_to_value(s2v_bool_in_out()) + .hide() + .hide_in_generic_ui(), + show_left: BoolParam::new("show_left", true) + .with_callback({ + let should_update_show_left = should_update_show_left.clone(); + Arc::new(move |_| should_update_show_left.store(true, Ordering::Release)) + }) + .hide() + .hide_in_generic_ui(), + show_right: BoolParam::new("show_right", true) + .with_callback({ + let should_update_show_right = should_update_show_right.clone(); + Arc::new(move |_| should_update_show_right.store(true, Ordering::Release)) + }) + .hide() + .hide_in_generic_ui(), } } } From 74389c01ef403782ef56bfb78d5b05f484de2880 Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Wed, 24 Apr 2024 13:18:38 +0200 Subject: [PATCH 27/28] make left and right switchable on graph --- src/editor.rs | 131 +++++++++++++++++++++++++++++--------------------- src/lib.rs | 20 +++----- src/params.rs | 14 +----- 3 files changed, 85 insertions(+), 80 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index cfd66bc..a427899 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -24,6 +24,8 @@ struct LambData { level_buffer_r: Arc>, gr_buffer_l: Arc>, gr_buffer_r: Arc>, + show_left: bool, + show_right: bool, } impl LambData { @@ -33,6 +35,8 @@ impl LambData { level_buffer_r: Arc>, gr_buffer_l: Arc>, gr_buffer_r: Arc>, + show_left: bool, + show_right: bool, ) -> Self { Self { params, @@ -40,11 +44,23 @@ impl LambData { level_buffer_r, gr_buffer_l, gr_buffer_r, + show_left, + show_right, } } } - -impl Model for LambData {} +pub enum AppEvent { + ShowLeft, + ShowRight, +} +impl Model for LambData { + fn event(&mut self, cx: &mut EventContext, event: &mut Event) { + event.map(|app_event, meta| match app_event { + AppEvent::ShowLeft => self.show_left = self.params.show_left.value(), + AppEvent::ShowRight => self.show_right = self.params.show_right.value(), + }); + } +} // Makes sense to also define this here, makes it a bit easier to keep track of pub(crate) fn default_state() -> Arc { @@ -59,6 +75,8 @@ pub(crate) fn create( level_buffer_r: Arc>, gr_buffer_l: Arc>, gr_buffer_r: Arc>, + show_left: bool, + show_right: bool, editor_state: Arc, ) -> Option> { create_vizia_editor(editor_state, ViziaTheming::Custom, move |cx, _| { @@ -75,6 +93,8 @@ pub(crate) fn create( level_buffer_r: level_buffer_r.clone(), gr_buffer_l: gr_buffer_l.clone(), gr_buffer_r: gr_buffer_r.clone(), + show_left: true, + show_right: true, } .build(cx); @@ -203,17 +223,21 @@ pub(crate) fn create( .bottom(Pixels(6.0)); HStack::new(cx, |cx| { ParamButton::new(cx, LambData::params, |params| ¶ms.show_left) + .on_press(|ex| ex.emit(AppEvent::ShowLeft)) + .disable_scroll_wheel() + // .on_scroll(|ex| ex.emit(AppEvent::ShowLeft)) .with_label("left") .width(Stretch(1.0)) .bottom(Pixels(6.0)); ParamButton::new(cx, LambData::params, |params| ¶ms.show_right) + .on_press(|ex| ex.emit(AppEvent::ShowRight)) + .disable_scroll_wheel() + // .on_scroll(|ex| ex.emit(AppEvent::ShowRight)) .with_label("right") .width(Stretch(1.0)) .bottom(Pixels(6.0)); }) - .width(Stretch(1.0)) - // .width(Percentage(100.0)) - ; + .width(Stretch(1.0)); }) .width(Percentage(100.0)) .col_between(Percentage(5.0)); @@ -225,13 +249,13 @@ pub(crate) fn create( .col_between(Percentage(2.5)) .height(Auto) .width(Percentage(100.0)); - peak_graph(cx, params.show_left.value(), params.show_right.value()); + peak_graph(cx); }) // everything - .width(Percentage(95.0)) - .height(Auto) - .left(Percentage(2.5)) - .right(Percentage(2.5)) - .class("center"); + .width(Percentage(95.0)) + .height(Auto) + .left(Percentage(2.5)) + .right(Percentage(2.5)) + .class("center"); ResizeHandle::new(cx); }) } @@ -398,7 +422,7 @@ impl>> View } /// Draws a peak graph with a grid backdrop, unit ruler, and a peak meter to side. -fn peak_graph(cx: &mut Context, show_left: bool, show_right: bool) { +fn peak_graph(cx: &mut Context) { HStack::new(cx, |cx| { ZStack::new(cx, |cx| { Grid::new( @@ -410,51 +434,50 @@ fn peak_graph(cx: &mut Context, show_left: bool, show_right: bool) { ) .color(Color::rgba(160, 160, 160, 60)); - if show_left { - println!("left"); - // level - Graph::new( - cx, - LambData::level_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) - .color(Color::rgba(0, 0, 255, 30)) - .background_color(Color::rgba(0, 0, 0, 40)); + // level + Graph::new( + cx, + LambData::level_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .visibility(LambData::show_left) + .color(Color::rgba(0, 0, 255, 30)) + .background_color(Color::rgba(0, 0, 0, 40)); - // gain reduction - Graph::new( - cx, - LambData::gr_buffer_l, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) - .color(Color::rgba(0, 0, 255, 255)) - .background_color(Color::rgba(250, 250, 250, 40)) - .fill_from(0.0); - }; - if show_right { - println!("right"); - // level - Graph::new( - cx, - LambData::level_buffer_r, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) + // level + Graph::new( + cx, + LambData::level_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .visibility(LambData::show_right) .color(Color::rgba(255, 0, 0, 30)) .background_color(Color::rgba(0, 0, 0, 40)); - // gain reduction - Graph::new( - cx, - LambData::gr_buffer_r, - (METER_MIN, METER_MAX), - ValueScaling::Decibels, - ) - .color(Color::rgba(255, 0, 0, 255)) - .background_color(Color::rgba(250, 250, 250, 40)) - .fill_from(0.0); - }; + // gain reduction + Graph::new( + cx, + LambData::gr_buffer_l, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .visibility(LambData::show_left) + .color(Color::rgba(0, 0, 255, 255)) + .background_color(Color::rgba(250, 250, 250, 40)) + .fill_from(0.0); + // gain reduction + Graph::new( + cx, + LambData::gr_buffer_r, + (METER_MIN, METER_MAX), + ValueScaling::Decibels, + ) + .visibility(LambData::show_right) + .color(Color::rgba(255, 0, 0, 255)) + .background_color(Color::rgba(250, 250, 250, 40)) + .fill_from(0.0); + // }; }); ZStack::new(cx, |cx| { diff --git a/src/lib.rs b/src/lib.rs index 2948dfd..1760686 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -32,23 +32,17 @@ pub struct Lamb { level_buffer_r: Arc>, gr_buffer_l: Arc>, gr_buffer_r: Arc>, + show_left: bool, + show_right: bool, /// If this is set at the start of the processing cycle, then the graph duration should be updated. should_update_time_scale: Arc, - should_update_show_left: Arc, - should_update_show_right: Arc, } impl Default for Lamb { fn default() -> Self { let should_update_time_scale = Arc::new(AtomicBool::new(false)); - let should_update_show_left = Arc::new(AtomicBool::new(false)); - let should_update_show_right = Arc::new(AtomicBool::new(false)); Self { - params: Arc::new(LambParams::new( - should_update_time_scale.clone(), - should_update_show_left.clone(), - should_update_show_right.clone(), - )), + params: Arc::new(LambParams::new(should_update_time_scale.clone())), // params: Arc::new(LambParams::default()), dsp: dsp::LambRs::default_boxed(), @@ -63,9 +57,9 @@ impl Default for Lamb { level_buffer_r: Arc::new(Mutex::new(PeakBuffer::new(1114, 7.0, 0.0))), gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), + show_left: true, + show_right: true, should_update_time_scale, - should_update_show_left, - should_update_show_right, } } } @@ -161,8 +155,6 @@ impl Plugin for Lamb { // Reset buffers and envelopes here. This can be called from the audio thread and may not // allocate. You can remove this function if you do not need it. self.should_update_time_scale.store(true, Ordering::Release); - self.should_update_show_left.store(true, Ordering::Release); - self.should_update_show_right.store(true, Ordering::Release); } fn editor(&mut self, _async_executor: AsyncExecutor) -> Option> { @@ -172,6 +164,8 @@ impl Plugin for Lamb { self.level_buffer_r.clone(), self.gr_buffer_l.clone(), self.gr_buffer_r.clone(), + self.show_left.clone(), + self.show_right.clone(), self.params.editor_state.clone(), ) } diff --git a/src/params.rs b/src/params.rs index 8d6e021..f4a585f 100644 --- a/src/params.rs +++ b/src/params.rs @@ -201,11 +201,7 @@ pub fn s2v_bool_in_out() -> Arc Option + Send + Sync> { } impl LambParams { - pub fn new( - should_update_time_scale: Arc, - should_update_show_left: Arc, - should_update_show_right: Arc, - ) -> Self { + pub fn new(should_update_time_scale: Arc) -> Self { Self { editor_state: editor::default_state(), @@ -357,17 +353,9 @@ impl LambParams { .hide() .hide_in_generic_ui(), show_left: BoolParam::new("show_left", true) - .with_callback({ - let should_update_show_left = should_update_show_left.clone(); - Arc::new(move |_| should_update_show_left.store(true, Ordering::Release)) - }) .hide() .hide_in_generic_ui(), show_right: BoolParam::new("show_right", true) - .with_callback({ - let should_update_show_right = should_update_show_right.clone(); - Arc::new(move |_| should_update_show_right.store(true, Ordering::Release)) - }) .hide() .hide_in_generic_ui(), } From ca79add6339e7467dc0016cbf3b81664609b6f2c Mon Sep 17 00:00:00 2001 From: Bart Brouns Date: Wed, 24 Apr 2024 19:52:30 +0200 Subject: [PATCH 28/28] consistent width between elements --- src/editor.rs | 81 ++++++++++++++++++++++++--------------------------- src/lib.rs | 8 ++--- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/src/editor.rs b/src/editor.rs index a427899..8c38558 100644 --- a/src/editor.rs +++ b/src/editor.rs @@ -109,8 +109,7 @@ pub(crate) fn create( // Label::new(cx, "🐑") // doesn't render .class("plugin-name"); Label::new(cx, "input gain").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| ¶ms.input_gain) - .bottom(Pixels(6.0)); + ParamSlider::new(cx, LambData::params, |params| ¶ms.input_gain); // three colomns HStack::new(cx, |cx| { // first @@ -141,9 +140,9 @@ pub(crate) fn create( .height(Auto) .class("center"); }) // bypass and latency_mode - .col_between(Percentage(5.0)) - .width(Percentage(100.0)) - .height(Auto); // bypass & latency_mode + .col_between(Pixels(13.0)) + .width(Percentage(100.0)) + .height(Auto); // bypass & latency_mode Label::new(cx, "ratio").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.strength); Label::new(cx, "threshold").class("fader-label"); @@ -183,19 +182,16 @@ pub(crate) fn create( }) // third .height(Auto) .class("center"); - }) - .col_between(Percentage(2.5)) - .height(Auto) - .width(Percentage(100.0)); // three colomns + }) // three colomns + .col_between(Pixels(26.0)) + .height(Auto) + .width(Percentage(100.0)); // three colomns Label::new(cx, "output gain").class("fader-label"); - ParamSlider::new(cx, LambData::params, |params| ¶ms.output_gain) - .bottom(Pixels(6.0)); + ParamSlider::new(cx, LambData::params, |params| ¶ms.output_gain); }) // parameters - // .width(Percentage(72.5)) .width(Stretch(3.0)) .height(Auto) - // .right(Percentage(2.5)) .class("center"); // graph + zoom VStack::new(cx, |cx| { @@ -206,56 +202,55 @@ pub(crate) fn create( .right(Pixels(0.0)); Label::new(cx, "zoom mode").class("fader-label"); ParamSlider::new(cx, LambData::params, |params| ¶ms.zoom_mode) - .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) - .bottom(Pixels(6.0)); + .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }); Label::new(cx, "").class("fader-label"); // spacer AttackReleaseGraph::new(cx, LambData::params).height(Pixels(200.0)); // .height(Pixels(260.0)); Label::new(cx, "gain reduction graph").class("fader-label"); HStack::new(cx, |cx| { ParamSlider::new(cx, LambData::params, |params| ¶ms.time_scale) - .width(Stretch(1.0)) - .set_style(ParamSliderStyle::CurrentStep { even: true }) - .bottom(Pixels(6.0)); + .width(Stretch(1.0)); + // .set_style(ParamSliderStyle::CurrentStep { even: true }); ParamSlider::new(cx, LambData::params, |params| ¶ms.in_out) .set_style(ParamSliderStyle::CurrentStepLabeled { even: true }) - .width(Stretch(1.0)) - .bottom(Pixels(6.0)); + .width(Stretch(1.0)); HStack::new(cx, |cx| { ParamButton::new(cx, LambData::params, |params| ¶ms.show_left) .on_press(|ex| ex.emit(AppEvent::ShowLeft)) .disable_scroll_wheel() // .on_scroll(|ex| ex.emit(AppEvent::ShowLeft)) .with_label("left") - .width(Stretch(1.0)) - .bottom(Pixels(6.0)); + .class("center") + .width(Stretch(1.0)); ParamButton::new(cx, LambData::params, |params| ¶ms.show_right) .on_press(|ex| ex.emit(AppEvent::ShowRight)) .disable_scroll_wheel() // .on_scroll(|ex| ex.emit(AppEvent::ShowRight)) .with_label("right") - .width(Stretch(1.0)) - .bottom(Pixels(6.0)); + .class("center") + .width(Stretch(1.0)); }) .width(Stretch(1.0)); - }) - .width(Percentage(100.0)) - .col_between(Percentage(5.0)); + }) // graph controls + .width(Percentage(100.0)) + .col_between(Pixels(13.0)); }) // graph + zoom .width(Stretch(1.0)) .height(Auto) .class("center"); }) // parameters + graph - .col_between(Percentage(2.5)) - .height(Auto) - .width(Percentage(100.0)); + .col_between(Pixels(26.0)) + .height(Auto) + .width(Percentage(100.0)); peak_graph(cx); }) // everything - .width(Percentage(95.0)) - .height(Auto) - .left(Percentage(2.5)) - .right(Percentage(2.5)) - .class("center"); + // .width(Percentage(100.0)) + .width(Stretch(1.0)) + .height(Auto) + .left(Pixels(26.0)) + .right(Pixels(26.0)) + // .class("center") + ; ResizeHandle::new(cx); }) } @@ -464,7 +459,7 @@ fn peak_graph(cx: &mut Context) { ) .visibility(LambData::show_left) .color(Color::rgba(0, 0, 255, 255)) - .background_color(Color::rgba(250, 250, 250, 40)) + .background_color(Color::rgba(250, 250, 250, 50)) .fill_from(0.0); // gain reduction Graph::new( @@ -475,7 +470,7 @@ fn peak_graph(cx: &mut Context) { ) .visibility(LambData::show_right) .color(Color::rgba(255, 0, 0, 255)) - .background_color(Color::rgba(250, 250, 250, 40)) + .background_color(Color::rgba(250, 250, 250, 50)) .fill_from(0.0); // }; }); @@ -496,7 +491,7 @@ fn peak_graph(cx: &mut Context) { }) .left(Pixels(4.0)) .width(Pixels(15.0)) - .background_color(Color::rgb(220, 220, 220)); + .background_color(Color::rgb(203, 203, 203)); HStack::new(cx, |cx| { Meter::new( cx, @@ -509,7 +504,7 @@ fn peak_graph(cx: &mut Context) { .color(Color::rgba(255, 0, 0, 255)); }) .width(Pixels(15.0)) - .background_color(Color::rgb(220, 220, 220)); + .background_color(Color::rgb(203, 203, 203)); // level Meter::new( cx, @@ -520,7 +515,7 @@ fn peak_graph(cx: &mut Context) { ) .width(Pixels(15.0)) .color(Color::rgba(0, 0, 255, 255)) - .background_color(Color::rgba(60, 60, 60, 60)); + .background_color(Color::rgba(178, 178, 178, 255)); Meter::new( cx, LambData::level_buffer_r, @@ -530,7 +525,7 @@ fn peak_graph(cx: &mut Context) { ) .width(Pixels(15.0)) .color(Color::rgba(255, 0, 0, 255)) - .background_color(Color::rgba(60, 60, 60, 60)); + .background_color(Color::rgba(178, 178, 178, 255)); }) .col_between(Pixels(2.)) .width(Auto) @@ -570,7 +565,7 @@ fn peak_graph(cx: &mut Context) { .width(Auto) .border_color(Color::rgb(163, 163, 163)) .border_width(Pixels(1.4)) - .top(Pixels(20.0)) - .height(Pixels(255.0)) + .top(Pixels(26.0)) + .height(Pixels(268.0)) .width(Percentage(100.0)); } diff --git a/src/lib.rs b/src/lib.rs index 1760686..db05441 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -53,10 +53,10 @@ impl Default for Lamb { temp_output_buffer_gr_l: f64::default_boxed_array::(), temp_output_buffer_gr_r: f64::default_boxed_array::(), sample_rate: 48000.0, - level_buffer_l: Arc::new(Mutex::new(PeakBuffer::new(1114, 7.0, 0.0))), - level_buffer_r: Arc::new(Mutex::new(PeakBuffer::new(1114, 7.0, 0.0))), - gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), - gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1114, 7.0, 0.0))), + level_buffer_l: Arc::new(Mutex::new(PeakBuffer::new(1120, 7.0, 0.0))), + level_buffer_r: Arc::new(Mutex::new(PeakBuffer::new(1120, 7.0, 0.0))), + gr_buffer_l: Arc::new(Mutex::new(MinimaBuffer::new(1120, 7.0, 0.0))), + gr_buffer_r: Arc::new(Mutex::new(MinimaBuffer::new(1120, 7.0, 0.0))), show_left: true, show_right: true, should_update_time_scale,