Created
April 23, 2022 16:40
-
-
Save MWHunter/4086e7b81f17110a8932ec49e0c3fea6 to your computer and use it in GitHub Desktop.
Wrapping Positive Modulo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private double wrappingPositiveModulo(double value, double min, double max) { | |
double moduloBy = max - min; | |
boolean isEven = ((int) Math.floor(value / moduloBy) & 1) == 0; | |
double modulo = value % moduloBy; | |
if (modulo < 0) modulo += moduloBy; | |
if (!isEven) { | |
modulo = moduloBy - modulo; | |
} | |
return modulo + min; | |
} | |
For min = -1 and max = 1.5 | |
Looping values from -9.1 to 10.1 | |
-9.1 results in -0.09999999999999964 | |
-9.0 results in 0.0 | |
-8.9 results in 0.09999999999999964 | |
-8.8 results in 0.1999999999999993 | |
-8.700000000000001 results in 0.29999999999999893 | |
-8.600000000000001 results in 0.3999999999999986 | |
-8.500000000000002 results in 0.4999999999999982 | |
-8.400000000000002 results in 0.5999999999999979 | |
-8.300000000000002 results in 0.6999999999999975 | |
-8.200000000000003 results in 0.7999999999999972 | |
-8.100000000000003 results in 0.8999999999999968 | |
-8.000000000000004 results in 0.9999999999999964 | |
-7.900000000000004 results in 1.099999999999996 | |
-7.800000000000004 results in 1.1999999999999957 | |
-7.700000000000005 results in 1.2999999999999954 | |
-7.600000000000005 results in 1.399999999999995 | |
-7.500000000000005 results in 1.4999999999999947 | |
-7.400000000000006 results in 1.4000000000000057 | |
-7.300000000000006 results in 1.300000000000006 | |
-7.200000000000006 results in 1.2000000000000064 | |
-7.100000000000007 results in 1.1000000000000068 | |
-7.000000000000007 results in 1.000000000000007 | |
-6.9000000000000075 results in 0.9000000000000075 | |
-6.800000000000008 results in 0.8000000000000078 | |
-6.700000000000008 results in 0.7000000000000082 | |
-6.6000000000000085 results in 0.6000000000000085 | |
-6.500000000000009 results in 0.5000000000000089 | |
-6.400000000000009 results in 0.40000000000000924 | |
-6.30000000000001 results in 0.3000000000000096 | |
-6.20000000000001 results in 0.20000000000000995 | |
-6.10000000000001 results in 0.1000000000000103 | |
-6.000000000000011 results in 1.0658141036401503E-14 | |
-5.900000000000011 results in -0.09999999999998899 | |
-5.800000000000011 results in -0.19999999999998863 | |
-5.700000000000012 results in -0.2999999999999883 | |
-5.600000000000012 results in -0.3999999999999879 | |
-5.500000000000012 results in -0.49999999999998757 | |
-5.400000000000013 results in -0.5999999999999872 | |
-5.300000000000013 results in -0.6999999999999869 | |
-5.2000000000000135 results in -0.7999999999999865 | |
-5.100000000000014 results in -0.8999999999999861 | |
-5.000000000000014 results in -0.9999999999999858 | |
-4.900000000000015 results in -0.9000000000000146 | |
-4.800000000000015 results in -0.8000000000000149 | |
-4.700000000000015 results in -0.7000000000000153 | |
-4.600000000000016 results in -0.6000000000000156 | |
-4.500000000000016 results in -0.500000000000016 | |
-4.400000000000016 results in -0.40000000000001634 | |
-4.300000000000017 results in -0.3000000000000167 | |
-4.200000000000017 results in -0.20000000000001705 | |
-4.100000000000017 results in -0.10000000000001741 | |
-4.000000000000018 results in -1.7763568394002505E-14 | |
-3.9000000000000177 results in 0.09999999999998233 | |
-3.8000000000000176 results in 0.19999999999998241 | |
-3.7000000000000175 results in 0.2999999999999825 | |
-3.6000000000000174 results in 0.3999999999999826 | |
-3.5000000000000173 results in 0.4999999999999827 | |
-3.4000000000000172 results in 0.5999999999999828 | |
-3.300000000000017 results in 0.6999999999999829 | |
-3.200000000000017 results in 0.799999999999983 | |
-3.100000000000017 results in 0.899999999999983 | |
-3.000000000000017 results in 0.9999999999999831 | |
-2.900000000000017 results in 1.0999999999999832 | |
-2.8000000000000167 results in 1.1999999999999833 | |
-2.7000000000000166 results in 1.2999999999999834 | |
-2.6000000000000165 results in 1.3999999999999835 | |
-2.5000000000000164 results in 1.4999999999999836 | |
-2.4000000000000163 results in 1.4000000000000163 | |
-2.3000000000000163 results in 1.3000000000000163 | |
-2.200000000000016 results in 1.2000000000000162 | |
-2.100000000000016 results in 1.100000000000016 | |
-2.000000000000016 results in 1.000000000000016 | |
-1.900000000000016 results in 0.9000000000000159 | |
-1.8000000000000158 results in 0.8000000000000158 | |
-1.7000000000000157 results in 0.7000000000000157 | |
-1.6000000000000156 results in 0.6000000000000156 | |
-1.5000000000000155 results in 0.5000000000000155 | |
-1.4000000000000155 results in 0.40000000000001545 | |
-1.3000000000000154 results in 0.30000000000001537 | |
-1.2000000000000153 results in 0.20000000000001528 | |
-1.1000000000000152 results in 0.10000000000001519 | |
-1.000000000000015 results in 1.509903313490213E-14 | |
-0.9000000000000151 results in -0.09999999999998499 | |
-0.8000000000000151 results in -0.19999999999998486 | |
-0.7000000000000152 results in -0.2999999999999847 | |
-0.6000000000000152 results in -0.3999999999999848 | |
-0.5000000000000152 results in -0.4999999999999849 | |
-0.40000000000001523 results in -0.5999999999999845 | |
-0.30000000000001525 results in -0.6999999999999846 | |
-0.20000000000001525 results in -0.7999999999999847 | |
-0.10000000000001524 results in -0.8999999999999848 | |
-1.5237811012980274E-14 results in -0.9999999999999849 | |
0.09999999999998477 results in -0.9000000000000152 | |
0.19999999999998477 results in -0.8000000000000153 | |
0.2999999999999848 results in -0.7000000000000153 | |
0.3999999999999848 results in -0.6000000000000152 | |
0.4999999999999848 results in -0.5000000000000152 | |
0.5999999999999848 results in -0.40000000000001523 | |
0.6999999999999847 results in -0.30000000000001525 | |
0.7999999999999847 results in -0.20000000000001528 | |
0.8999999999999847 results in -0.1000000000000153 | |
0.9999999999999847 results in -1.532107773982716E-14 | |
1.0999999999999848 results in 0.09999999999998477 | |
1.1999999999999849 results in 0.19999999999998486 | |
1.299999999999985 results in 0.29999999999998495 | |
1.399999999999985 results in 0.39999999999998503 | |
1.4999999999999851 results in 0.4999999999999851 | |
1.5999999999999852 results in 0.5999999999999852 | |
1.6999999999999853 results in 0.6999999999999853 | |
1.7999999999999854 results in 0.7999999999999854 | |
1.8999999999999855 results in 0.8999999999999855 | |
1.9999999999999856 results in 0.9999999999999856 | |
2.0999999999999854 results in 1.0999999999999854 | |
2.1999999999999855 results in 1.1999999999999855 | |
2.2999999999999856 results in 1.2999999999999856 | |
2.3999999999999857 results in 1.3999999999999857 | |
2.499999999999986 results in 1.4999999999999858 | |
2.599999999999986 results in 1.4000000000000141 | |
2.699999999999986 results in 1.300000000000014 | |
2.799999999999986 results in 1.200000000000014 | |
2.899999999999986 results in 1.1000000000000139 | |
2.9999999999999862 results in 1.0000000000000138 | |
3.0999999999999863 results in 0.9000000000000137 | |
3.1999999999999864 results in 0.8000000000000136 | |
3.2999999999999865 results in 0.7000000000000135 | |
3.3999999999999866 results in 0.6000000000000134 | |
3.4999999999999867 results in 0.5000000000000133 | |
3.5999999999999868 results in 0.40000000000001323 | |
3.699999999999987 results in 0.30000000000001315 | |
3.799999999999987 results in 0.20000000000001306 | |
3.899999999999987 results in 0.10000000000001297 | |
3.999999999999987 results in 1.2878587085651816E-14 | |
4.099999999999987 results in -0.09999999999998721 | |
4.199999999999987 results in -0.19999999999998685 | |
4.2999999999999865 results in -0.2999999999999865 | |
4.399999999999986 results in -0.39999999999998614 | |
4.499999999999986 results in -0.4999999999999858 | |
4.599999999999985 results in -0.5999999999999854 | |
4.699999999999985 results in -0.6999999999999851 | |
4.799999999999985 results in -0.7999999999999847 | |
4.899999999999984 results in -0.8999999999999844 | |
4.999999999999984 results in -0.999999999999984 | |
5.099999999999984 results in -0.9000000000000163 | |
5.199999999999983 results in -0.8000000000000167 | |
5.299999999999983 results in -0.700000000000017 | |
5.399999999999983 results in -0.6000000000000174 | |
5.499999999999982 results in -0.5000000000000178 | |
5.599999999999982 results in -0.4000000000000181 | |
5.6999999999999815 results in -0.3000000000000185 | |
5.799999999999981 results in -0.20000000000001883 | |
5.899999999999981 results in -0.10000000000001918 | |
5.9999999999999805 results in -1.9539925233402755E-14 | |
6.09999999999998 results in 0.0999999999999801 | |
6.19999999999998 results in 0.19999999999997975 | |
6.299999999999979 results in 0.2999999999999794 | |
6.399999999999979 results in 0.39999999999997904 | |
6.499999999999979 results in 0.4999999999999787 | |
6.599999999999978 results in 0.5999999999999783 | |
6.699999999999978 results in 0.699999999999978 | |
6.799999999999978 results in 0.7999999999999776 | |
6.899999999999977 results in 0.8999999999999773 | |
6.999999999999977 results in 0.9999999999999769 | |
7.0999999999999766 results in 1.0999999999999766 | |
7.199999999999976 results in 1.1999999999999762 | |
7.299999999999976 results in 1.2999999999999758 | |
7.3999999999999755 results in 1.3999999999999755 | |
7.499999999999975 results in 1.4999999999999751 | |
7.599999999999975 results in 1.4000000000000252 | |
7.699999999999974 results in 1.3000000000000256 | |
7.799999999999974 results in 1.200000000000026 | |
7.899999999999974 results in 1.1000000000000263 | |
7.999999999999973 results in 1.0000000000000266 | |
8.099999999999973 results in 0.900000000000027 | |
8.199999999999973 results in 0.8000000000000274 | |
8.299999999999972 results in 0.7000000000000277 | |
8.399999999999972 results in 0.6000000000000281 | |
8.499999999999972 results in 0.5000000000000284 | |
8.599999999999971 results in 0.4000000000000288 | |
8.69999999999997 results in 0.30000000000002913 | |
8.79999999999997 results in 0.2000000000000295 | |
8.89999999999997 results in 0.10000000000002984 | |
8.99999999999997 results in 3.019806626980426E-14 | |
9.09999999999997 results in -0.09999999999996945 | |
9.199999999999969 results in -0.1999999999999691 | |
9.299999999999969 results in -0.29999999999996874 | |
9.399999999999968 results in -0.3999999999999684 | |
9.499999999999968 results in -0.499999999999968 | |
9.599999999999968 results in -0.5999999999999677 | |
9.699999999999967 results in -0.6999999999999673 | |
9.799999999999967 results in -0.799999999999967 | |
9.899999999999967 results in -0.8999999999999666 | |
9.999999999999966 results in -0.9999999999999662 | |
10.099999999999966 results in -0.9000000000000341 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment