**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
```
TargetSpecific::Default::FunctionGeoDistance<method>>();
    #if USE_MULTITARGET_CODE
        selector.registerImplementation<TargetArch::AVX,
            TargetSpecific::AVX::FunctionGeoDistance<method>>();
        selector.registerImplementation<TargetArch::AVX2,
            TargetSpecific::AVX2::FunctionGeoDistance<method>>();
        selector.registerImplementation<TargetArch::AVX512F,
            TargetSpecific::AVX512F::FunctionGeoDistance<method>>();
    #endif
    }
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count) const override
    {
        return selector.selectAndExecute(arguments, result_type, input_rows_count);
    }
    static FunctionPtr create(const Context & context)
    {
        return std::make_shared<FunctionGeoDistance<method>>(context);
    }
private:
    ImplementationSelector<IFunction> selector;
};
void registerFunctionGeoDistance(FunctionFactory & factory)
{
    geodistInit();
    factory.registerFunction<FunctionGeoDistance<Method::SPHERE_DEGREES>>();
    factory.registerFunction<FunctionGeoDistance<Method::SPHERE_METERS>>();
    factory.registerFunction<FunctionGeoDistance<Method::WGS84_METERS>>();
}
}