首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在sqlite中计算平方根

如何在sqlite中计算平方根
EN

Stack Overflow用户
提问于 2012-10-05 00:45:07
回答 4查看 21.7K关注 0票数 20

我需要在sqlite数据库中计算欧几里得距离。

除了为数学函数编写和加载动态库之外,有人知道如何在sqlite中计算平方根吗?

在这里的http://en.wikipedia.org/wiki/Fast_inverse_square_root中,我即将求助于快速的平方根反比算法,尽管它可能会变得比我现在需要的更有趣。

顺便说一句,弄清楚如何做幂是很棒的(这是一个普遍的问题,比起数字本身的乘法,这是一个更简洁的编码)。

谢谢,

西蒙尼

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-05 00:48:08

好吧,我有一个半个答案。

是的,它涉及到第三方,但你不必自己写:你检查过this page上的最后一个扩展了吗?

它包括几个数学函数,其中包括sqrt()。

票数 7
EN

Stack Overflow用户

发布于 2016-10-20 05:24:44

这是10000以下数字的sqrt近似值。它可以扩展为任意数字,并可以根据需要扩展到任意精度。这种表格插值在大多数快速实现中都会发生:

case when weight >= 1 and weight<=10 then 1+0.240253073*(weight-1) 
     when weight>=10 and weight<=100 then 3.16227766+0.075974693*(weight-10) 
     when weight>=100 and weight<=1000 then 10+0.024025307*(weight-100)      
     else 31.6227766+0.007597469 *(weight-1000) end

而且有一个奇怪的事实,你在这样一个10的平方根插值表中使用的每个因子都是前一个因子的0.316227766倍-所以你可以让它适用于任意大的数字,或者甚至填满一个充满这些值的表,使它适用于任何数字。(这会导致一些压缩吗?)

或者这个可爱的整数长度函数,使用长度函数(插值表在这里可能工作得更好,但我喜欢log10和log10 ()相似,并且它对任何整数都有效-不需要插值)。

 ((length(x)+length(x*2)+length(x*3)
  +length(x*4)+length(x*5))/5.0)-1.0

一个比我更好的数学头脑可能会想出更好和更密集的近似。考虑到c中的大多数sqrt函数都使用近似值,这是一个很好的解决方案。

这是唯一的原生方法。

票数 5
EN

Stack Overflow用户

发布于 2012-10-05 00:53:19

据我所知,你不能只使用核心函数来做到这一点。

下面是本机函数Core functions和聚合函数Aggregate functions的列表。

要解决您的问题,您可以编写自己的UDF (用户定义函数),如HERE所示

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12731941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档