1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2014 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker public class Main { 18*795d594fSAndroid Build Coastguard Worker main(String[] args)19*795d594fSAndroid Build Coastguard Worker public static void main(String[] args) { 20*795d594fSAndroid Build Coastguard Worker remFloat(); 21*795d594fSAndroid Build Coastguard Worker remDouble(); 22*795d594fSAndroid Build Coastguard Worker } 23*795d594fSAndroid Build Coastguard Worker remFloat()24*795d594fSAndroid Build Coastguard Worker private static void remFloat() { 25*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.98F, $opt$Rem(1.98F, 2F)); 26*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(2F, 0.5F)); 27*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.09999F, $opt$Rem(1.0F, 0.1F)); 28*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.9F, $opt$Rem(6.5F, 2.3F)); 29*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.48F, $opt$Rem(1.98F, 1.5F)); 30*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999F, $opt$Rem(0.9999F, 1.222F)); 31*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999F, $opt$Rem(0.9999F, 1.0001F)); 32*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.98F, $opt$Rem(-1.98F, 2F)); 33*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0F, $opt$Rem(-2F, 0.5F)); 34*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.09999F, $opt$Rem(-1.0F, 0.1F)); 35*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.9F, $opt$Rem(-6.5F, 2.3F)); 36*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.48F, $opt$Rem(-1.98F, 1.5F)); 37*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999F, $opt$Rem(-0.9999F, 1.222F)); 38*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999F, $opt$Rem(-0.9999F, 1.0001F)); 39*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.98F, $opt$Rem(1.98F, -2F)); 40*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(2F, -0.5F)); 41*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.09999F, $opt$Rem(1.0F, -0.1F)); 42*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.9F, $opt$Rem(6.5F, -2.3F)); 43*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.48F, $opt$Rem(1.98F, -1.5F)); 44*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999F, $opt$Rem(0.9999F, -1.222F)); 45*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999F, $opt$Rem(0.9999F, -1.0001F)); 46*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.98F, $opt$Rem(-1.98F, -2F)); 47*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0F, $opt$Rem(-2F, -0.5F)); 48*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.09999F, $opt$Rem(-1.0F, -0.1F)); 49*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.9F, $opt$Rem(-6.5F, -2.3F)); 50*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.48F, $opt$Rem(-1.98F, -1.5F)); 51*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999F, $opt$Rem(-0.9999F, -1.222F)); 52*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999F, $opt$Rem(-0.9999F, -1.0001F)); 53*795d594fSAndroid Build Coastguard Worker 54*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.68267e-18F, $opt$Rem(61615.2F, -2.48699e-17F)); 55*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-8.63819e-09F, $opt$Rem(-1.73479e+14F, 3.11154e-08F)); 56*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.10911e-12F, $opt$Rem(338122F, 4.57572e-12F)); 57*795d594fSAndroid Build Coastguard Worker 58*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2F, $opt$RemConst(6F)); 59*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2F, $opt$Rem(5.1F, 3.1F)); 60*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2.1F, $opt$Rem(5.1F, 3F)); 61*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-2F, $opt$Rem(-5.1F, 3.1F)); 62*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-2.1F, $opt$Rem(-5.1F, -3F)); 63*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2F, $opt$Rem(6F, 4F)); 64*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2F, $opt$Rem(6F, -4F)); 65*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(6F, 3F)); 66*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(6F, -3F)); 67*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(6F, 1F)); 68*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(6F, -1F)); 69*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1F, $opt$Rem(-7F, 3F)); 70*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1F, $opt$Rem(-7F, -3F)); 71*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(6F, 6F)); 72*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(-6F, -6F)); 73*795d594fSAndroid Build Coastguard Worker expectApproxEquals(7F, $opt$Rem(7F, 9F)); 74*795d594fSAndroid Build Coastguard Worker expectApproxEquals(7F, $opt$Rem(7F, -9F)); 75*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-7F, $opt$Rem(-7F, 9F)); 76*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-7F, $opt$Rem(-7F, -9F)); 77*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MAX_VALUE, 1F)); 78*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MAX_VALUE, -1F)); 79*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MIN_VALUE, 1F)); 80*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MIN_VALUE, -1F)); 81*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(0F, 7F)); 82*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(0F, Float.MAX_VALUE)); 83*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(0F, Float.MIN_VALUE)); 84*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(0F, Float.POSITIVE_INFINITY)); 85*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(0F, Float.NEGATIVE_INFINITY)); 86*795d594fSAndroid Build Coastguard Worker expectApproxEquals(4F, $opt$Rem(4F, Float.POSITIVE_INFINITY)); 87*795d594fSAndroid Build Coastguard Worker expectApproxEquals(4F, $opt$Rem(4F, Float.NEGATIVE_INFINITY)); 88*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-4F, $opt$Rem(-4F, Float.POSITIVE_INFINITY)); 89*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-4F, $opt$Rem(-4F, Float.NEGATIVE_INFINITY)); 90*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MIN_NORMAL, Float.MIN_VALUE)); 91*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MIN_NORMAL, Float.MIN_NORMAL)); 92*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MIN_VALUE, Float.MIN_VALUE)); 93*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MAX_VALUE, Float.MIN_VALUE)); 94*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MAX_VALUE, Float.MAX_VALUE)); 95*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0F, $opt$Rem(Float.MAX_VALUE, Float.MIN_NORMAL)); 96*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_NORMAL, $opt$Rem(Float.MIN_NORMAL, Float.MAX_VALUE)); 97*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_NORMAL, $opt$Rem(Float.MIN_NORMAL, Float.NEGATIVE_INFINITY)); 98*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_NORMAL, $opt$Rem(Float.MIN_NORMAL, Float.POSITIVE_INFINITY)); 99*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_VALUE, $opt$Rem(Float.MIN_VALUE, Float.MAX_VALUE)); 100*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_VALUE, $opt$Rem(Float.MIN_VALUE, Float.MIN_NORMAL)); 101*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_VALUE, $opt$Rem(Float.MIN_VALUE, Float.NEGATIVE_INFINITY)); 102*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MIN_VALUE, $opt$Rem(Float.MIN_VALUE, Float.POSITIVE_INFINITY)); 103*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MAX_VALUE, $opt$Rem(Float.MAX_VALUE, Float.NEGATIVE_INFINITY)); 104*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Float.MAX_VALUE, $opt$Rem(Float.MAX_VALUE, Float.POSITIVE_INFINITY)); 105*795d594fSAndroid Build Coastguard Worker 106*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.NaN, 3F)); 107*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(3F, Float.NaN)); 108*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(3F, 0F)); 109*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(1F, 0F)); 110*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(-1F, 0F)); 111*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.NEGATIVE_INFINITY, Float.MIN_VALUE)); 112*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.NEGATIVE_INFINITY, Float.MAX_VALUE)); 113*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.NEGATIVE_INFINITY, Float.MIN_NORMAL)); 114*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY)); 115*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY)); 116*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.POSITIVE_INFINITY, Float.MIN_VALUE)); 117*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.POSITIVE_INFINITY, Float.MAX_VALUE)); 118*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.POSITIVE_INFINITY, Float.MIN_NORMAL)); 119*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY)); 120*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY)); 121*795d594fSAndroid Build Coastguard Worker } 122*795d594fSAndroid Build Coastguard Worker remDouble()123*795d594fSAndroid Build Coastguard Worker private static void remDouble() { 124*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.98D, $opt$Rem(1.98D, 2D)); 125*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(2D, 0.5D)); 126*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.09999D, $opt$Rem(1.0D, 0.1D)); 127*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.9D, $opt$Rem(6.5D, 2.3D)); 128*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.48D, $opt$Rem(1.98D, 1.5D)); 129*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999D, $opt$Rem(0.9999D, 1.222D)); 130*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999D, $opt$Rem(0.9999D, 1.0001D)); 131*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.98D, $opt$Rem(-1.98D, 2D)); 132*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0D, $opt$Rem(-2D, 0.5D)); 133*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.09999D, $opt$Rem(-1.0D, 0.1D)); 134*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.9D, $opt$Rem(-6.5D, 2.3D)); 135*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.48D, $opt$Rem(-1.98D, 1.5D)); 136*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999D, $opt$Rem(-0.9999D, 1.222D)); 137*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999D, $opt$Rem(-0.9999D, 1.0001D)); 138*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.98D, $opt$Rem(1.98D, -2D)); 139*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(2D, -0.5D)); 140*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.09999D, $opt$Rem(1.0D, -0.1D)); 141*795d594fSAndroid Build Coastguard Worker expectApproxEquals(1.9D, $opt$Rem(6.5D, -2.3D)); 142*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.48D, $opt$Rem(1.98D, -1.5D)); 143*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999D, $opt$Rem(0.9999D, -1.222D)); 144*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0.9999D, $opt$Rem(0.9999D, -1.0001D)); 145*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.98D, $opt$Rem(-1.98D, -2D)); 146*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0D, $opt$Rem(-2D, -0.5D)); 147*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.09999D, $opt$Rem(-1.0D, -0.1D)); 148*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1.9D, $opt$Rem(-6.5D, -2.3D)); 149*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.48D, $opt$Rem(-1.98D, -1.5D)); 150*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999D, $opt$Rem(-0.9999D, -1.222D)); 151*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-0.9999D, $opt$Rem(-0.9999D, -1.0001D)); 152*795d594fSAndroid Build Coastguard Worker 153*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2D, $opt$RemConst(6D)); 154*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2D, $opt$Rem(5.1D, 3.1D)); 155*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2.1D, $opt$Rem(5.1D, 3D)); 156*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-2D, $opt$Rem(-5.1D, 3.1D)); 157*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-2.1D, $opt$Rem(-5.1D, -3D)); 158*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2D, $opt$Rem(6D, 4D)); 159*795d594fSAndroid Build Coastguard Worker expectApproxEquals(2D, $opt$Rem(6D, -4D)); 160*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(6D, 3D)); 161*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(6D, -3D)); 162*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(6D, 1D)); 163*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(6D, -1D)); 164*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1D, $opt$Rem(-7D, 3D)); 165*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-1D, $opt$Rem(-7D, -3D)); 166*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(6D, 6D)); 167*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(-6D, -6D)); 168*795d594fSAndroid Build Coastguard Worker expectApproxEquals(7D, $opt$Rem(7D, 9D)); 169*795d594fSAndroid Build Coastguard Worker expectApproxEquals(7D, $opt$Rem(7D, -9D)); 170*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-7D, $opt$Rem(-7D, 9D)); 171*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-7D, $opt$Rem(-7D, -9D)); 172*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MAX_VALUE, 1D)); 173*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MAX_VALUE, -1D)); 174*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MIN_VALUE, 1D)); 175*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MIN_VALUE, -1D)); 176*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(0D, 7D)); 177*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(0D, Double.MAX_VALUE)); 178*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(0D, Double.MIN_VALUE)); 179*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(0D, Double.POSITIVE_INFINITY)); 180*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(0D, Double.NEGATIVE_INFINITY)); 181*795d594fSAndroid Build Coastguard Worker expectApproxEquals(4D, $opt$Rem(4D, Double.POSITIVE_INFINITY)); 182*795d594fSAndroid Build Coastguard Worker expectApproxEquals(4D, $opt$Rem(4D, Double.NEGATIVE_INFINITY)); 183*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-4D, $opt$Rem(-4D, Double.POSITIVE_INFINITY)); 184*795d594fSAndroid Build Coastguard Worker expectApproxEquals(-4D, $opt$Rem(-4D, Double.NEGATIVE_INFINITY)); 185*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MIN_NORMAL, Double.MIN_VALUE)); 186*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MIN_NORMAL, Double.MIN_NORMAL)); 187*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MIN_VALUE, Double.MIN_VALUE)); 188*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MAX_VALUE, Double.MIN_VALUE)); 189*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MAX_VALUE, Double.MAX_VALUE)); 190*795d594fSAndroid Build Coastguard Worker expectApproxEquals(0D, $opt$Rem(Double.MAX_VALUE, Double.MIN_NORMAL)); 191*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_NORMAL, $opt$Rem(Double.MIN_NORMAL, Double.MAX_VALUE)); 192*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_NORMAL, $opt$Rem(Double.MIN_NORMAL, Double.NEGATIVE_INFINITY)); 193*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_NORMAL, $opt$Rem(Double.MIN_NORMAL, Double.POSITIVE_INFINITY)); 194*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_VALUE, $opt$Rem(Double.MIN_VALUE, Double.MAX_VALUE)); 195*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_VALUE, $opt$Rem(Double.MIN_VALUE, Double.MIN_NORMAL)); 196*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_VALUE, $opt$Rem(Double.MIN_VALUE, Double.NEGATIVE_INFINITY)); 197*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MIN_VALUE, $opt$Rem(Double.MIN_VALUE, Double.POSITIVE_INFINITY)); 198*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MAX_VALUE, $opt$Rem(Double.MAX_VALUE, Double.NEGATIVE_INFINITY)); 199*795d594fSAndroid Build Coastguard Worker expectApproxEquals(Double.MAX_VALUE, $opt$Rem(Double.MAX_VALUE, Double.POSITIVE_INFINITY)); 200*795d594fSAndroid Build Coastguard Worker 201*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.NaN, 3D)); 202*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(3D, Double.NaN)); 203*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(3D, 0D)); 204*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(1D, 0D)); 205*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(-1D, 0D)); 206*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.NEGATIVE_INFINITY, Double.MIN_VALUE)); 207*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.NEGATIVE_INFINITY, Double.MAX_VALUE)); 208*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.NEGATIVE_INFINITY, Double.MIN_NORMAL)); 209*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY)); 210*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY)); 211*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.POSITIVE_INFINITY, Double.MIN_VALUE)); 212*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.POSITIVE_INFINITY, Double.MAX_VALUE)); 213*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.POSITIVE_INFINITY, Double.MIN_NORMAL)); 214*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)); 215*795d594fSAndroid Build Coastguard Worker expectNaN($opt$Rem(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY)); 216*795d594fSAndroid Build Coastguard Worker } 217*795d594fSAndroid Build Coastguard Worker $opt$Rem(float a, float b)218*795d594fSAndroid Build Coastguard Worker static float $opt$Rem(float a, float b) { 219*795d594fSAndroid Build Coastguard Worker return a % b; 220*795d594fSAndroid Build Coastguard Worker } 221*795d594fSAndroid Build Coastguard Worker $opt$RemConst(float a)222*795d594fSAndroid Build Coastguard Worker static float $opt$RemConst(float a) { 223*795d594fSAndroid Build Coastguard Worker return a % 4F; 224*795d594fSAndroid Build Coastguard Worker } 225*795d594fSAndroid Build Coastguard Worker $opt$Rem(double a, double b)226*795d594fSAndroid Build Coastguard Worker static double $opt$Rem(double a, double b) { 227*795d594fSAndroid Build Coastguard Worker return a % b; 228*795d594fSAndroid Build Coastguard Worker } 229*795d594fSAndroid Build Coastguard Worker $opt$RemConst(double a)230*795d594fSAndroid Build Coastguard Worker static double $opt$RemConst(double a) { 231*795d594fSAndroid Build Coastguard Worker return a % 4D; 232*795d594fSAndroid Build Coastguard Worker } 233*795d594fSAndroid Build Coastguard Worker expectApproxEquals(float a, float b)234*795d594fSAndroid Build Coastguard Worker public static void expectApproxEquals(float a, float b) { 235*795d594fSAndroid Build Coastguard Worker float maxDelta = 0.00001F; 236*795d594fSAndroid Build Coastguard Worker boolean aproxEquals = (a > b) ? ((a - b) < maxDelta) : ((b - a) < maxDelta); 237*795d594fSAndroid Build Coastguard Worker if (!aproxEquals) { 238*795d594fSAndroid Build Coastguard Worker throw new Error("Expected: " + a + ", found: " + b 239*795d594fSAndroid Build Coastguard Worker + ", with delta: " + maxDelta + " " + (a - b)); 240*795d594fSAndroid Build Coastguard Worker } 241*795d594fSAndroid Build Coastguard Worker } 242*795d594fSAndroid Build Coastguard Worker expectApproxEquals(double a, double b)243*795d594fSAndroid Build Coastguard Worker public static void expectApproxEquals(double a, double b) { 244*795d594fSAndroid Build Coastguard Worker double maxDelta = 0.00001D; 245*795d594fSAndroid Build Coastguard Worker boolean aproxEquals = (a > b) ? ((a - b) < maxDelta) : ((b - a) < maxDelta); 246*795d594fSAndroid Build Coastguard Worker if (!aproxEquals) { 247*795d594fSAndroid Build Coastguard Worker throw new Error("Expected: " + a + ", found: " 248*795d594fSAndroid Build Coastguard Worker + b + ", with delta: " + maxDelta + " " + (a - b)); 249*795d594fSAndroid Build Coastguard Worker } 250*795d594fSAndroid Build Coastguard Worker } 251*795d594fSAndroid Build Coastguard Worker expectNaN(float a)252*795d594fSAndroid Build Coastguard Worker public static void expectNaN(float a) { 253*795d594fSAndroid Build Coastguard Worker if (a == a) { 254*795d594fSAndroid Build Coastguard Worker throw new Error("Expected NaN: " + a); 255*795d594fSAndroid Build Coastguard Worker } 256*795d594fSAndroid Build Coastguard Worker } 257*795d594fSAndroid Build Coastguard Worker expectNaN(double a)258*795d594fSAndroid Build Coastguard Worker public static void expectNaN(double a) { 259*795d594fSAndroid Build Coastguard Worker if (a == a) { 260*795d594fSAndroid Build Coastguard Worker throw new Error("Expected NaN: " + a); 261*795d594fSAndroid Build Coastguard Worker } 262*795d594fSAndroid Build Coastguard Worker } 263*795d594fSAndroid Build Coastguard Worker 264*795d594fSAndroid Build Coastguard Worker } 265