#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MathConstants {
pub x_height: f64,
pub quad: f64,
pub num1: f64,
pub num2: f64,
pub num3: f64,
pub denom1: f64,
pub denom2: f64,
pub sup1: f64,
pub sup2: f64,
pub sup3: f64,
pub sub1: f64,
pub sub2: f64,
pub sup_drop: f64,
pub sub_drop: f64,
pub delim1: f64,
pub delim2: f64,
pub axis_height: f64,
pub rule_thickness: f64,
pub big_op_spacing1: f64,
pub big_op_spacing2: f64,
pub big_op_spacing3: f64,
pub big_op_spacing4: f64,
pub big_op_spacing5: f64,
pub display_op_scale: f64,
pub delimiter_factor: f64,
pub delimiter_shortfall: f64,
pub null_delimiter_space: f64,
pub baseline_skip: f64,
pub line_skip: f64,
pub delimiter_scale_ceiling: f64,
pub fallback_space: f64,
}
pub const CM: MathConstants = MathConstants {
x_height: 0.430_555,
quad: 1.000_003,
num1: 0.676_508,
num2: 0.393_732,
num3: 0.443_731,
denom1: 0.685_951,
denom2: 0.344_841,
sup1: 0.412_892,
sup2: 0.362_892,
sup3: 0.288_889,
sub1: 0.150_000,
sub2: 0.247_217,
sup_drop: 0.386_108,
sub_drop: 0.050_000,
delim1: 2.389_999,
delim2: 1.010_000,
axis_height: 0.250_000,
rule_thickness: 0.039_999,
big_op_spacing1: 0.111_112,
big_op_spacing2: 0.166_667,
big_op_spacing3: 0.200_000,
big_op_spacing4: 0.600_000,
big_op_spacing5: 0.100_000,
display_op_scale: 1.4,
delimiter_factor: 0.901,
delimiter_shortfall: 0.5,
null_delimiter_space: 0.12,
baseline_skip: 1.2,
line_skip: 0.1,
delimiter_scale_ceiling: 1.25,
fallback_space: 1.0 / 3.0,
};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn the_published_family_is_internally_consistent() {
let c = std::hint::black_box(CM);
assert!(c.num1 > c.num2 && c.num2 < c.num3);
assert!(c.denom1 > c.denom2);
assert!(c.sup1 > c.sup2 && c.sup2 > c.sup3);
assert!(c.sub2 > c.sub1);
assert!(c.delim1 > c.delim2);
assert!((c.axis_height - 0.25).abs() < 1e-9);
assert!((c.rule_thickness - 0.04).abs() < 1e-5);
assert!(c.x_height < 0.5 && c.x_height > 0.4);
}
}