**Describe the bug**
`greatCircleAngle` function is very inaccurate for some arguments. Examples:

```
┌─greatCircleAngle(0, 45, 0.1, 45.1)─┐
│                         0.13063148 │
└────────────────────────────────────┘
But must be 0.1224388

┌─greatCircleAngle(0, 45, 1, 45)─┐
│                      0.8408964 │
└────────────────────────────────┘
Must be 0.7071023

┌─greatCircleAngle(0, 45, 1, 45.1)─┐
│                       0.84645635 │
└──────────────────────────────────┘
Must be 0.7135268
```
{
    SPHERE_DEGREES,
    SPHERE_METERS,
    WGS84_METERS,
};
}
DECLARE_MULTITARGET_CODE(
namespace
{
template <Method method>
float distance(float lon1deg, float lat1deg, float lon2deg, float lat2deg)
{
    float lat_diff = geodistDegDiff(lat1deg - lat2deg);
    float lon_diff = geodistDegDiff(lon1deg - lon2deg);
    if (lon_diff < 13)
    {