Lines Matching refs:CustomFloat

112 template CustomFloat(uint bits)
115 alias CustomFloat = CustomFloat!(CustomFloatParams!(bits)); variable
119 template CustomFloat(uint precision, uint exponentWidth, CustomFloatFlags flags = CustomFloatFlags.…
122 alias CustomFloat = CustomFloat!(CustomFloatParams!(precision, exponentWidth, flags)); variable
131 CustomFloat!16 x; // Using the number of bits
132 CustomFloat!(10, 5) y; // Using the precision and exponent width
133CustomFloat!(10, 5,CustomFloatFlags.ieee) z; // Using the precision, exponent width and fo…
134CustomFloat!(10, 5,CustomFloatFlags.ieee, 15) w; // Using the precision, exponent width, forma…
145 …alias Probability = CustomFloat!(4, 4, CustomFloatFlags.ieee^CustomFloatFlags.probability^CustomFl…
158 CustomFloat!(CustomFloatParams!(min(F.sizeof*8, 80))) get;
171 struct CustomFloat(uint precision, // fraction bits (23 for float)
386 static @property CustomFloat infinity() in infinity()
388 CustomFloat value; in infinity()
398 static @property CustomFloat nan() in nan()
400 CustomFloat value; in nan()
416 static @property CustomFloat epsilon() in epsilon()
418 CustomFloat one = CustomFloat(1); in epsilon()
419 CustomFloat onePlusEpsilon = one; in epsilon()
422 return CustomFloat(onePlusEpsilon - one); in epsilon()
441 static @property CustomFloat max() in max()
443 CustomFloat value; in max()
452 static @property CustomFloat min_normal() in min_normal()
454 CustomFloat value; in min_normal()
466 @property CustomFloat re() { return this; } in re()
469 static @property CustomFloat im() { return CustomFloat(0.0f); } in im()
478 void opAssign(F:CustomFloat)(F input)
623 CustomFloat!(5, 10),
624 CustomFloat!(5, 11, CustomFloatFlags.ieee ^ CustomFloatFlags.signed),
625 CustomFloat!(1, 7, CustomFloatFlags.ieee ^ CustomFloatFlags.signed),
626CustomFloat!(4, 3, CustomFloatFlags.ieee | CustomFloatFlags.probability ^ CustomFloatFlags.signed)
658 CustomFloat!(5, 10) y = CustomFloat!(5, 10)(0.125);
664 alias cf = CustomFloat!(5, 2);
708 alias myFloat = CustomFloat!(23, 8);
720 alias myDouble = CustomFloat!(52, 11);
736 static assert(CustomFloat!(1, 6).dig == 0);
737 static assert(CustomFloat!(9, 6).dig == 2);
738 static assert(CustomFloat!(10, 5).dig == 3);
739 static assert(CustomFloat!(10, 6, CustomFloatFlags.none).dig == 2);
740 static assert(CustomFloat!(11, 5, CustomFloatFlags.none).dig == 3);
741 static assert(CustomFloat!(64, 7).dig == 19);
747 static assert(CustomFloat!(10, 5).mant_dig == 11);
748 static assert(CustomFloat!(10, 6, CustomFloatFlags.none).mant_dig == 10);
754 static assert(CustomFloat!(1, 6).max_exp == 2^^5);
755 static assert(CustomFloat!(2, 6, CustomFloatFlags.none).max_exp == 2^^5);
756 static assert(CustomFloat!(5, 10).max_exp == 2^^9);
757 static assert(CustomFloat!(6, 10, CustomFloatFlags.none).max_exp == 2^^9);
758 static assert(CustomFloat!(2, 6, CustomFloatFlags.nan).max_exp == 2^^5);
759 static assert(CustomFloat!(6, 10, CustomFloatFlags.nan).max_exp == 2^^9);
765 static assert(CustomFloat!(1, 6).min_exp == -2^^5+3);
766 static assert(CustomFloat!(5, 10).min_exp == -2^^9+3);
767 static assert(CustomFloat!(2, 6, CustomFloatFlags.none).min_exp == -2^^5+1);
768 static assert(CustomFloat!(6, 10, CustomFloatFlags.none).min_exp == -2^^9+1);
769 static assert(CustomFloat!(2, 6, CustomFloatFlags.nan).min_exp == -2^^5+2);
770 static assert(CustomFloat!(6, 10, CustomFloatFlags.nan).min_exp == -2^^9+2);
771 static assert(CustomFloat!(2, 6, CustomFloatFlags.allowDenorm).min_exp == -2^^5+2);
772 static assert(CustomFloat!(6, 10, CustomFloatFlags.allowDenorm).min_exp == -2^^9+2);
778 assert(CustomFloat!(1, 6).max_10_exp == 9);
779 assert(CustomFloat!(5, 10).max_10_exp == 154);
780 assert(CustomFloat!(2, 6, CustomFloatFlags.none).max_10_exp == 9);
781 assert(CustomFloat!(6, 10, CustomFloatFlags.none).max_10_exp == 154);
782 assert(CustomFloat!(2, 6, CustomFloatFlags.nan).max_10_exp == 9);
783 assert(CustomFloat!(6, 10, CustomFloatFlags.nan).max_10_exp == 154);
789 assert(CustomFloat!(1, 6).min_10_exp == -9);
790 assert(CustomFloat!(5, 10).min_10_exp == -153);
791 assert(CustomFloat!(2, 6, CustomFloatFlags.none).min_10_exp == -9);
792 assert(CustomFloat!(6, 10, CustomFloatFlags.none).min_10_exp == -154);
793 assert(CustomFloat!(2, 6, CustomFloatFlags.nan).min_10_exp == -9);
794 assert(CustomFloat!(6, 10, CustomFloatFlags.nan).min_10_exp == -153);
795 assert(CustomFloat!(2, 6, CustomFloatFlags.allowDenorm).min_10_exp == -9);
796 assert(CustomFloat!(6, 10, CustomFloatFlags.allowDenorm).min_10_exp == -153);
802 assert(CustomFloat!(1,6).epsilon.sign == 0);
803 assert(CustomFloat!(1,6).epsilon.exponent == 30);
804 assert(CustomFloat!(1,6).epsilon.significand == 0);
805 assert(CustomFloat!(2,5).epsilon.sign == 0);
806 assert(CustomFloat!(2,5).epsilon.exponent == 13);
807 assert(CustomFloat!(2,5).epsilon.significand == 0);
808 assert(CustomFloat!(3,4).epsilon.sign == 0);
809 assert(CustomFloat!(3,4).epsilon.exponent == 4);
810 assert(CustomFloat!(3,4).epsilon.significand == 0);
812 assert(CustomFloat!(4,3).epsilon.sign == 0);
813 assert(CustomFloat!(4,3).epsilon.exponent == 0);
814 assert(CustomFloat!(4,3).epsilon.significand == 4);
815 assert(CustomFloat!(5,2).epsilon.sign == 0);
816 assert(CustomFloat!(5,2).epsilon.exponent == 0);
817 assert(CustomFloat!(5,2).epsilon.significand == 1);
823 static assert(CustomFloat!(5,2).max.sign == 0);
824 static assert(CustomFloat!(5,2).max.exponent == 2);
825 static assert(CustomFloat!(5,2).max.significand == 31);
826 static assert(CustomFloat!(4,3).max.sign == 0);
827 static assert(CustomFloat!(4,3).max.exponent == 6);
828 static assert(CustomFloat!(4,3).max.significand == 15);
829 static assert(CustomFloat!(3,4).max.sign == 0);
830 static assert(CustomFloat!(3,4).max.exponent == 14);
831 static assert(CustomFloat!(3,4).max.significand == 7);
832 static assert(CustomFloat!(2,5).max.sign == 0);
833 static assert(CustomFloat!(2,5).max.exponent == 30);
834 static assert(CustomFloat!(2,5).max.significand == 3);
835 static assert(CustomFloat!(1,6).max.sign == 0);
836 static assert(CustomFloat!(1,6).max.exponent == 62);
837 static assert(CustomFloat!(1,6).max.significand == 1);
838 static assert(CustomFloat!(3,5, CustomFloatFlags.none).max.exponent == 31);
839 static assert(CustomFloat!(3,5, CustomFloatFlags.none).max.significand == 7);
845 static assert(CustomFloat!(5,2).min_normal.sign == 0);
846 static assert(CustomFloat!(5,2).min_normal.exponent == 1);
847 static assert(CustomFloat!(5,2).min_normal.significand == 0);
848 static assert(CustomFloat!(4,3).min_normal.sign == 0);
849 static assert(CustomFloat!(4,3).min_normal.exponent == 1);
850 static assert(CustomFloat!(4,3).min_normal.significand == 0);
851 static assert(CustomFloat!(3,4).min_normal.sign == 0);
852 static assert(CustomFloat!(3,4).min_normal.exponent == 1);
853 static assert(CustomFloat!(3,4).min_normal.significand == 0);
854 static assert(CustomFloat!(2,5).min_normal.sign == 0);
855 static assert(CustomFloat!(2,5).min_normal.exponent == 1);
856 static assert(CustomFloat!(2,5).min_normal.significand == 0);
857 static assert(CustomFloat!(1,6).min_normal.sign == 0);
858 static assert(CustomFloat!(1,6).min_normal.exponent == 1);
859 static assert(CustomFloat!(1,6).min_normal.significand == 0);
860 static assert(CustomFloat!(3,5, CustomFloatFlags.none).min_normal.exponent == 0);
861 static assert(CustomFloat!(3,5, CustomFloatFlags.none).min_normal.significand == 4);
868 alias cf = CustomFloat!(5, 2);
891 alias cf = CustomFloat!(3, 5, CustomFloatFlags.none);
902 alias cf = CustomFloat!(3, 5, CustomFloatFlags.nan);
913 alias cf = CustomFloat!(24, 8, CustomFloatFlags.none);