org.apache.lucene.util

## Class SloppyMath

• public class SloppyMath
extends Object
Math functions that trade off accuracy for speed.
• ### Field Detail

public static final double TO_RADIANS
Constant Field Values
• #### TO_DEGREES

public static final double TO_DEGREES
Constant Field Values
• ### Constructor Detail

• #### SloppyMath

public SloppyMath()
• ### Method Detail

• #### haversinMeters

public static double haversinMeters(double lat1,
double lon1,
double lat2,
double lon2)
Returns the Haversine distance in meters between two points specified in decimal degrees (latitude/longitude). This works correctly even if the dateline is between the two points.

Error is at most 4E-1 (40cm) from the actual haversine distance, but is typically much smaller for reasonable distances: around 1E-5 (0.01mm) for distances less than 1000km.

Parameters:
lat1 - Latitude of the first point.
lon1 - Longitude of the first point.
lat2 - Latitude of the second point.
lon2 - Longitude of the second point.
Returns:
distance in meters.
• #### haversinMeters

public static double haversinMeters(double sortKey)
Returns the Haversine distance in meters between two points given the previous result from haversinSortKey(double, double, double, double)
Returns:
distance in meters.
• #### haversinKilometers

@Deprecated
public static double haversinKilometers(double lat1,
double lon1,
double lat2,
double lon2)
Returns the Haversine distance in kilometers between two points specified in decimal degrees (latitude/longitude). This works correctly even if the dateline is between the two points.
Parameters:
lat1 - Latitude of the first point.
lon1 - Longitude of the first point.
lat2 - Latitude of the second point.
lon2 - Longitude of the second point.
Returns:
distance in kilometers.
• #### haversinSortKey

public static double haversinSortKey(double lat1,
double lon1,
double lat2,
double lon2)
Returns a sort key for distance. This is less expensive to compute than haversinMeters(double, double, double, double), but it always compares the same. This can be converted into an actual distance with haversinMeters(double), which effectively does the second half of the computation.
• #### cos

public static double cos(double a)
Returns the trigonometric cosine of an angle.

Error is around 1E-15.

Special cases:

• If the argument is NaN or an infinity, then the result is NaN.
Parameters:
a - an angle, in radians.
Returns:
the cosine of the argument.
Math.cos(double)
• #### asin

public static double asin(double a)
Returns the arc sine of a value.

The returned angle is in the range -pi/2 through pi/2. Error is around 1E-7.

Special cases:

• If the argument is NaN or its absolute value is greater than 1, then the result is NaN.
Parameters:
a - the value whose arc sine is to be returned.
Returns:
arc sine of the argument
Math.asin(double)
• #### toDegrees

@Deprecated
public static double toDegrees(double radians)
Deprecated. Use Math.toDegrees(double) on Java 9+.
Convert to degrees.
Parameters:
radians - radians to convert to degrees
Returns:
degrees