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

如何在sqlite中计算平方根
EN

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

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

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

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

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

谢谢,

西蒙尼

EN

回答 3

Stack Overflow用户

回答已采纳

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

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

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

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

票数 7
EN

Stack Overflow用户

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

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

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

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

票数 2
EN

Stack Overflow用户

发布于 2021-04-08 06:44:53

只有当数学函数不可用时...而且真的只是在绝望中因为这不会很快。

代码语言:javascript
复制
-- bisect to find the square root to any tolerance desired
with 
 input(n) as (select 500), --input
 sqrt(lo, hi, guess, n, i) as (
  select 1, n, n/2, n, 0 from input
  union all
  select case when guess*guess < n then guess else lo end,
         case when guess*guess < n then hi else guess end,
         case when guess*guess < n then (hi+guess)/2.0 else (lo+guess)/2.0 end,
         n ,
         i +1 from sqrt
         where abs(guess*guess - n) > 0.0001), -- tolerance
 sqrt_out(x, n) as (select guess, n from sqrt order by sqrt.i desc limit 1)
 select * from sqrt_out
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12731941

复制
相关文章

相似问题

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