``` #include <stdio.h> ``` morph_real_as_decimalstr_to_float () ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8> --> ℝ ~ native.Float32 ```sscanf(src, "%f", dst);``` morph_real_as_decimalstr_to_double () ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8> --> ℝ ~ native.Float64 ```sscanf(src, "%lf", dst);``` morph_real_as_float_to_decimalstr () ℝ ~ native.Float32 --> ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8> ```sprintf(dst, "%f", *src);``` morph_real_as_double_to_decimalstr () ℝ ~ native.Float64 --> ℝ ~ <PosInt 10 BigEndian> ~ <Seq~<ValueTerminated 0> <Digit 10>~Char~Ascii~native.UInt8> ```sprintf(dst, "%f", *src);``` morph_real_as_float_to_double () ℝ ~ native.Float32 --> ℝ ~ native.Float64 ```*dst = *src;``` morph_real_as_double_to_float () ℝ ~ native.Float64 --> ℝ ~ native.Float32 ``` fprintf(stderr, "Warning: morphin Double -> Float. Precision loss!"); *dst = *src; ``` morph_real_as_u64_to_float () ℝ ~ ℕ ~ native.UInt64 --> ℝ ~ native.Float32 ``` fprintf(stderr, "Warning: morphin UInt64 -> Float. Precision loss!"); *dst = *src; ``` morph_real_as_u64_to_double () ℝ ~ ℕ ~ native.UInt64 --> ℝ ~ native.Float64 ``` fprintf(stderr, "Warning: morphin UInt64 -> Double. Precision loss!"); *dst = *src; ``` morph_real_as_nat_to_quantized_linear () ℝ ~ ℕ ~ native.UInt64 --> ℝ ~ <QuantizedLinear 0 1 1> ~ ℕ ~ native.UInt64 ``` *dst = *src; ``` morph_real_as_quantized_linear_to_float (Begin: ℝ, End: ℝ, Steps: ℤ) ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64 --> ℝ ~ native.Float32 ``` *dst = (float)Begin + ( *src * ((float)End - (float)Begin) ) / (float)Steps; ``` morph_real_as_float_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ) ℝ ~ native.Float32 --> ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64 ``` *dst = ((*src - (float)Begin) * (float)Steps) / ((float)End - (float)Begin); ``` morph_real_as_quantized_linear_to_double (Begin: ℝ, End: ℝ, Steps: ℤ) ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64 --> ℝ ~ native.Float64 ``` *dst = (double)Begin + ( *src * ((double)End - (double)Begin) ) / (double)Steps; ``` morph_real_as_double_to_quantized_linear (Begin: ℝ, End: ℝ, Steps: ℤ) ℝ ~ native.Float64 --> ℝ ~ <QuantizedLinear Begin End Steps> ~ ℕ ~ native.UInt64 ``` *dst = ((*src - (double)Begin) * (double)Steps) / ((double)End - (double)Begin); ```