What I want to do in the end is
I want to make a table of normal distribution cumulative functions
In order to do this, Error function must be calculated. There's a factorial calculation in it, but it's not in the MySQL math function
If it's a program,
retval=1
for in 1..n
retval*=i
I think it's easy to write, but how is it faster (speed and source) to write in MySQL?
Generate tables from 1 to N and then
exp(sum(log(n)))
I've seen articles like taking , but log and exp seem to be much heavier than integer operations, so I don't think it's worth it
Do we have no choice but to obtain data from the program side and calculate it on the program side?
This is MySQL 5.7
Write down the details of what you want to do
for tens of thousands of normal distributed records with mean and distributed columns
Calculate where the current time is in the cumulative distribution
I would like Lambda to take action to retrieve only records in a specific location
I'm thinking of using the formula "To calculate this repeatedly, it's easy to formulate as follows" from the wiki (I can't paste it because it's SVG).
The outer side is sum, but the inner loop is actually graded, so I asked you how to write it.
There is also an approximation, but I didn't understand the meaning of "at least decimal and single digit accuracy for the error function near the real axis," and I used eye-fuku calculations because only a few first sections were required to converge faster than Taylor's.
The required accuracy is about 1/24 x 3600 because the horizontal axis is the daily distribution and the precision is sufficient in seconds.
Can the approximate expression satisfy this accuracy?
The expression itself is complicated, but based on the above accuracy requirements, it is a light process that does not actually have 100 operations
There are only a few data to be retrieved each time, so
I thought it would be more beneficial to do it on the MySQL side than using network overhead
This is the SQL for the power of the power. I tried the mysql8.0.18.0 32-bit version.
As metropolis commented, 21 was an error.
set@n:=20;
select f
from(
with recursive rc(f, i)as(
select1,@n
union all
select f*i, i-1
from rc
where i-1>=0)
select f, i from rc
as a
where i = 1
;
2432902008176640000
I understand that the answer is different from what KTI wanted to solve, but
I'm going to answer because I think it might be helpful to write recursive SQL using the with clause.
© 2024 OneMinuteCode. All rights reserved.