**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
```
* The function calculates distance between two points on Earth specified by longitude and latitude in degrees.
  *
  * Latitude must be in [-90, 90], longitude must be [-180, 180].
  *
  * Original code of this implementation of this function is here:
  * https://github.com/sphinxsearch/sphinx/blob/409f2c2b5b2ff70b04e38f92b6b1a890326bad65/src/sphinxexpr.cpp#L3825.
  * Andrey Aksenov, the author of original code, permitted to use this code in ClickHouse under the Apache 2.0 license.
  * Presentation about this code from Highload++ Siberia 2019 is here https://github.com/ClickHouse/ClickHouse/files/3324740/1_._._GEODIST_._.pdf
  * The main idea of this implementation is optimisations based on Taylor series, trigonometric identity
  *  and calculated constants once for cosine, arcsine(sqrt) and look up table.
  */
namespace
{
constexpr double PI = 3.14159265358979323846;
constexpr float RAD_IN_DEG = static_cast<float>(PI / 180.0);
constexpr float RAD_IN_DEG_HALF = static_cast<float>(PI / 360.0);
constexpr size_t COS_LUT_SIZE = 1024; 
constexpr size_t ASIN_SQRT_LUT_SIZE = 512;
constexpr size_t METRIC_LUT_SIZE = 1024;
/** Earth radius in meters using WGS84 authalic radius.
  * We use this value to be consistent with H3 library.
  */
constexpr float EARTH_RADIUS = 6371007.180918475;
constexpr float EARTH_DIAMETER = 2 * EARTH_RADIUS;
float cos_lut[COS_LUT_SIZE + 1];       
float asin_sqrt_lut[ASIN_SQRT_LUT_SIZE + 1]; 
float sphere_metric_lut[METRIC_LUT_SIZE + 1]; 
float sphere_metric_meters_lut[METRIC_LUT_SIZE + 1]; 
float wgs84_metric_meters_lut[2 * (METRIC_LUT_SIZE + 1)]; 
inline double sqr(double v)