我需要在sqlite数据库中计算欧几里得距离。
除了为数学函数编写和加载动态库之外,有人知道如何在sqlite中计算平方根吗?
在这里的http://en.wikipedia.org/wiki/Fast_inverse_square_root中,我即将求助于快速的平方根反比算法,尽管它可能会变得比我现在需要的更有趣。
顺便说一句,弄清楚如何做幂是很棒的(这是一个普遍的问题,比起数字本身的乘法,这是一个更简洁的编码)。
谢谢,
西蒙尼
发布于 2012-10-05 00:48:08
发布于 2012-10-05 00:53:19
据我所知,你不能只使用核心函数来做到这一点。
下面是本机函数Core functions和聚合函数Aggregate functions的列表。
要解决您的问题,您可以编写自己的UDF (用户定义函数),如HERE所示
发布于 2021-04-08 06:44:53
只有当数学函数不可用时...而且真的只是在绝望中因为这不会很快。
-- 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
https://stackoverflow.com/questions/12731941
复制相似问题