erfi, erfw (w(z)) functions
|
11-01-2017, 06:03 PM
Post: #1
|
|||
|
|||
erfi, erfw (w(z)) functions
hi everybody,
Luckily Prime has inside its CAS two useful functions to magare problems connected to error treatment and statistics: the error function, erf() and the complementary error function, erfc(). If one want to "complete" that series, could think to implement also other two "sisters": the imaginary error function, erfi() and a function that I call "erfw", otherwise w(z) that handles every complex number. See here for theory. The code: erfi() Code:
erfw() Code:
Enjoy with the Prime! Salvo Micciché ∫aL√0mic (IT9CLU) :: HP Prime 50g 41CX 71b 42s 39s 35s 12C 15C - DM42, DM41X - WP34s Prime Soft. Lib |
|||
08-22-2020, 04:10 PM
(This post was last modified: 07-21-2021 10:53 AM by Albert Chan.)
Post: #2
|
|||
|
|||
RE: erfi, erfw (w(z)) functions
A mnemonic I find useful
swap -1 and i, and swap the function (erf ↔ erfi, sin ↔ sinh, cos ↔ cosh, tan ↔ tanh) Code: erf (-x) = - erf(x) → erf (ix) = i erfi(x) Update: we could replace i by 1/i, and get a new set of identities cosh(x) = cos(i*x) = cos(-i*x) = cos(x/i) atan(x) = atanh(ix)/i = atanh(-ix)/(-i) = atanh(x/i)*i ... Update2: A better mnemonic maybe to turn function even sin(x)/x = sinh(±i*x)/(±i*x) = 1 − x^2/6 + x^4/120 − ... sinh(x)/x = sin(±i*x)/(±i*x) = 1 + x^2/6 + x^4/120 + ... |
|||
09-03-2021, 10:39 AM
Post: #3
|
|||
|
|||
RE: erfi, erfw (w(z)) functions
For odd functions (erf ↔ erfi, sin ↔ sinh, tan ↔ tanh, and their inverse), we can swap the parts.
Let swap(x + y*i) = y + x*i sinh(z) = swap(sin(swap(z))) sin(z) = swap(sinh(swap(z))) ... >>> from cmath import * >>> sin(3+4j) (3.8537380379193773-27.016813258003932j) >>> sinh(4+3j) (-27.016813258003932+3.8537380379193773j) This is easier to remember, without worrying signs of ×/÷ i Code is likely simpler, since ×/÷ i is usually implemented by swap parts, then fix sign. From HP-71B cpr.a, http://www.jeffcalc.hp41.eu/emu71/mathrom.html Code: * ************************ Proof is trivial, since swap(z) = i*conj(z) sinh(z) = sin(i*z) / i conj(sinh(z)) = sinh(conj(z)) = sin(i*conj(z)) / i Multiply-by-i, and replace i*conj() by swap() swap(sinh(z)) = sin(swap(z)) |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)