elliptic_nome_fortran_real128 Module

Compute nome for elliptic integrals corresponding to modulus

Note

  • 山内二郎, 宇野利雄, 一松信 共編
    電子計算機のための数値計算法 3
    培風館, 1972.
    数理科学シリーズ ; 5
    NDLサーチ
  • A002103 - OEIS

Uses

  • module~~elliptic_nome_fortran_real128~~UsesGraph module~elliptic_nome_fortran_real128 elliptic_nome_fortran_real128 ieee_arithmetic ieee_arithmetic module~elliptic_nome_fortran_real128->ieee_arithmetic iso_fortran_env iso_fortran_env module~elliptic_nome_fortran_real128->iso_fortran_env

Used by

  • module~~elliptic_nome_fortran_real128~~UsedByGraph module~elliptic_nome_fortran_real128 elliptic_nome_fortran_real128 module~elliptic_nome_fortran elliptic_nome_fortran module~elliptic_nome_fortran->module~elliptic_nome_fortran_real128

Variables

Type Visibility Attributes Name Initial
real(kind=real128), private, parameter :: c_01 = 1.0_real128
real(kind=real128), private, parameter :: c_05 = 2.0_real128
real(kind=real128), private, parameter :: c_09 = 15.0_real128
real(kind=real128), private, parameter :: c_13 = 150.0_real128
real(kind=real128), private, parameter :: c_17 = 1707.0_real128
real(kind=real128), private, parameter :: c_21 = 20910.0_real128
real(kind=real128), private, parameter :: c_25 = 268616.0_real128
real(kind=real128), private, parameter :: c_29 = 3567400.0_real128
real(kind=real128), private, parameter :: c_33 = 48555069.0_real128
real(kind=real128), private, parameter :: q_err = tiny(0.0_real128)

Functions

public elemental function elliptic_nome_01_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_05_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_09_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_13_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_17_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_21_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_25_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_29_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_33_real128(k) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

public elemental function elliptic_nome_auto_real128(k) result(q)

Calculate the elliptic nome for the given elliptic modulus

Read more…

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_05(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_05_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_09(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_09_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_13(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_13_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_17(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_17_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_21(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_21_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_25(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_25_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_29(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_29_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_33(pw01_eps, pw04_eps) result(q)

Calculate the elliptic nome using the Horner's method and the following polynomial:

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

Return Value real(kind=real128)

elliptic nome

private elemental function elliptic_nome_by_epsilon_33_horner(pw01_eps, pw04_eps, pre_step) result(q)

Calculate the following for the given and :

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(in) :: pw04_eps

real(kind=real128), intent(in) :: pre_step

Return Value real(kind=real128)

elliptic nome


Subroutines

private elemental subroutine calculate_pw01_epsilon(pw02_k, comp_k, sqrt_comp_k, pw01_eps)

calculate the auxiliary parameter for the given elliptic modulus

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw02_k

real(kind=real128), intent(in) :: comp_k

real(kind=real128), intent(out) :: sqrt_comp_k

real(kind=real128), intent(out) :: pw01_eps

auxiliary parameter

private elemental subroutine calculate_pw04_epsilon(pw02_k, comp_k, sqrt_comp_k, pw01_eps, pw04_eps)

calculate the auxiliary parameter and for the given elliptic modulus

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: pw02_k

real(kind=real128), intent(in) :: comp_k

real(kind=real128), intent(out) :: sqrt_comp_k

real(kind=real128), intent(out) :: pw01_eps

auxiliary parameter

real(kind=real128), intent(out) :: pw04_eps

private elemental subroutine evaluate_modulus(k, pw02_k, comp_k)

Calculate and for the given elliptic modulus

Arguments

Type IntentOptional Attributes Name
real(kind=real128), intent(in) :: k

elliptic modulus

real(kind=real128), intent(out) :: pw02_k

real(kind=real128), intent(out) :: comp_k