역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데,

 C 언어나 C++ 언어에서는 asin 함수로 구현되어 있다.

<gsl/gsl_math.h> 를 인클루드하면 gsl_math.h 가 자체적으로 <math.h> 를 또 인클루드하므로, <math.h> 를 별도로 인크루드할 필요가 없다.

sinh 와 cosh 의 역함수로 그냥 C 언어의 <math.h> 에서 정의된 asinhacosh 를 써도 되지만. 여기서는 <gsl/gsl_math.h> 에서 정의된 gsl_asinhgsl_acosh 를 써 보았다.

참고로 gsl 이라 함은 GNU Scientific Library 의 줄임글이다.

아래의 소스는 Visual C++ 또는 gcc 로 컴파일되는 소스이다. 실행 결과는 같다.

/*
 * Filename: testArcSineWithGSL.c
 *
 *    Require gsl 1.13 above and Visual C 2010
 *
 *     Or
 *
 *    Require gsl 1.13 above and Cygwin
 *
 * Compile: cl testArcSineWithGSL.c gsl.lib /MD
 * Execute: testArcSineWithGSL
 *
 *  Or
 *
 * Compile: gcc -Wall -I/usr/local/include -c testArcSineWithGSL.c
 *     Link: gcc -o testArcSineGSL -L/usr/local/lib testArcSineWithGSL.o -lgsl
 * Execute: ./testArcSineGSL
 *
 *
 * Date: 2013. 1. 10.
 * Copyright (c) pkim _AT_ scripts.pe.kr
 */

#include <stdio.h>
#include <gsl/gsl_math.h>   // This includes <math.h>


int main(void) {
    double x, y, u, v;

    x = -0.9;
    y = asin(x);
    printf("x = %g\n", x);
    printf("y = asin(%g) = %.9f\n", x, y);
    printf("sin(%.9f) = %g\n", y, sin(y));
    printf("\n");

    x = 1.1;
    u = gsl_acosh(x);
    v = gsl_asinh(x);
    printf("x = %g\n", x);
    printf("u = gsl_acosh(%g) = %.10f\n", x, u);
    printf("v = gsl_asinh(%g) = %.10f\n", x, v);
    printf("\n");

    printf("cosh(u) = cosh(%.10f) = %g\n", u, cosh(u));
    printf("sinh(v) = sinh(%.10f) = %g\n", v, sinh(v));

    return 0;
}

/*
Output:
x = -0.9
y = asin(-0.9) = -1.119769515
sin(-1.119769515) = -0.9

x = 1.1
u = gsl_acosh(1.1) = 0.4435682544
v = gsl_asinh(1.1) = 0.9503469298

cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1

*/

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데,

Python 언어에서는 math.asin() 함수로 이미 구현되어 있다.

이를 사용하기 위해서는 import 구문

import math

가 있으면 된다. 그러나 scipy 나 numpy 모듈을 사용할 때는 얘기가 달라진다.

sin 함수의 역함수가 scipy 모듈에서는 scipy.arcsin 으로, numpy 모듈에서는 numpy.arcsin 으로 구현되어 있다. (asin 이 아니라 arcsin 임에 주의하자.) 한편 mpmath 모듈에서는 mpmath.asin 으로 구현되어 았다. 이들 이용하기 위해서는 import 구문

import scipy

또는

import numpy

또는

import mpmath

가 각각 필요하다.

다음의 첫 두 개 소스는 scipy 와 numpy 의 차이 이외에는  똑 같다.

 

[ scipy 모듈을 이용하는 Python 소스 ]

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

# Filename: testArcSineWithScipy.py
#
#            Approximate square roots, cubic roots and n-th roots of a given number.
#
# Execute: python testArcSineWithScipy.py
#
# Date: 2013. 1. 9.
# Copyright (c) 2013 PH Kim  (pkim __AT__ scripts.pe.kr)

import scipy as sp

x = -0.9
y = sp.arcsin(x)
print "x = %g" % x
print "y = sp.arcsin(x) = sp.arcsin(%g) = %.9f" % (x, y)
print "sp.sin(y) = sp.sin(%.9f) = %g" % (y, sp.sin(y))
print

x = 1.1
u = sp.arccosh(x)
v = sp.arcsinh(x)
print "x = %g" % x
print "u = sp.arccosh(x) = sp.arccosh(%g) = %.10f" % (x, u)
print "v = sp.arcsinh(x) = sp.arcsinh(%g) = %.10f" % (x, v)
print

print "sp.cosh(u) = sp.cosh(%.10f) = %g" % (u, sp.cosh(u))
print "sp.sinh(v) = sp.sinh(%.10f) = %g" % (v, sp.sinh(v))

"""
Output:
x = -0.9
y = sp.arcsin(x) = sp.arcsin(-0.9) = -1.119769515
sp.sin(y) = sp.sin(-1.119769515) = -0.9

x = 1.1
u = sp.arccosh(x) = sp.arccosh(1.1) = 0.4435682544
v = sp.arcsinh(x) = sp.arcsinh(1.1) = 0.9503469298

sp.cosh(u) = sp.cosh(0.4435682544) = 1.1
sp.sinh(v) = sp.sinh(0.9503469298) = 1.1
"""

 

[ numpy 모듈을 이용하는 Python 소스 ]

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

# Filename: testArcSineWithNumpy.py
#
#            Approximate square roots, cubic roots and n-th roots of a given number.
#
# Execute: python testArcSineWithNumpy.py
#
# Date: 2013. 1. 9.
# Copyright (c) 2013 PH Kim  (pkim __AT__ scripts.pe.kr)

import numpy as np

x = -0.9
y = np.arcsin(x)
print "x = %g" % x
print "y = np.arcsin(x) = np.arcsin(%g) = %.9f" % (x, y)
print "np.sin(y) = np.sin(%.9f) = %g" % (y, np.sin(y))
print

x = 1.1
u = np.arccosh(x)
v = np.arcsinh(x)
print "x = %g" % x
print "u = np.arccosh(x) = np.arccosh(%g) = %.10f" % (x, u)
print "v = np.arcsinh(x) = np.arcsinh(%g) = %.10f" % (x, v)
print

print "np.cosh(u) = np.cosh(%.10f) = %g" % (u, np.cosh(u))
print "np.sinh(v) = np.sinh(%.10f) = %g" % (v, np.sinh(v))

"""
Output:
x = -0.9
y = np.arcsin(x) = np.arcsin(-0.9) = -1.119769515
np.sin(y) = np.sin(-1.119769515) = -0.9

x = 1.1
u = np.arccosh(x) = np.arccosh(1.1) = 0.4435682544
v = np.arcsinh(x) = np.arcsinh(1.1) = 0.9503469298

np.cosh(u) = np.cosh(0.4435682544) = 1.1
np.sinh(v) = np.sinh(0.9503469298) = 1.1
"""

 

 

[ mpmath 모듈을 이용하는 Python 소스 ]

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

# Filename: testArcSineWithMpmath.py
#
#            Approximate square roots, cubic roots and n-th roots of a given number.
#
# Execute: python testArcSineMpmath.py
#
# Date: 2013. 1. 9.
# Copyright (c) 2013 PH Kim  (pkim __AT__ scripts.pe.kr)

import mpmath as mp

x = -0.9
y = mp.asin(x)
print "x = %g" % x
print "y = mp.asin(%g) = %.9f" % (x, y)
print "mp.sin(y) = mp.sin(%.9f) = %g" % (y, mp.sin(y))
print

x = 1.1
u = mp.acosh(x)
v = mp.asinh(x)
print "x = %g" % x
print "u = mp.acosh(%g) = %.9f" % (x, u)
print "v = mp.asinh(%g) = %.9f" % (x, v)
print

print "mp.cosh(u) = mp.cosh(%.9f) = %g" % (u, mp.cosh(u))
print "mp.sinh(v) = mp.sinh(%.9f) = %g" % (u, mp.sinh(v))

 

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Maxima 언어에서는 asin 함수로 구현되어 있다. 또한 Maxima 언어에는 쌍곡선함수 sinhcosh 의 역함수가 각각 asinhacosh 라는 이름으로 구현되어 있다.

첨고로 Maxima 의 Input 에서  ; 로 끝나는 명령은 명령의 수행 결과가 Output 으로 출력되고, $ 로 끝나는 줄은 Output 으로의 출력을 보류한다. 이 때는 disp() 나 printf() 등에 의한 명시적인 출력만 출력된다.

아래는 wxMaxima 를 이용하여 역삼각함수와 역쌍곡함수의 값을 계산하고 검증한 것이다.

Maxima 에서 다음 몇 줄만 입력하여 각 cell 마다 Ctrl + Enter 키를 눌러 실행하면 된다. 아니면 메뉴의 Cell -> Evaluate All Cells 를 택하면 한꺼번에 실행된다.

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Mathematica 언어에서는 ArcSin 함수로 구현되어 있다. 또한 Mathematica 언어에는 쌍곡선함수 sinhcosh 의 역함수로 각각 ArcSinhArcCosh 가 구현되어 있다.

Mathematica Notebook 에서 다음 몇 줄만 입력하여 각 cell 마다 Shift + Enter 키를 눌러 실행하면 된다. SetPrecision 은 계산 과정과 출력에서 정확도의 유효수자 개수릉 지정하기 위해 사용되었다.

x = -0.9
y = SetPrecision[ArcSin[x], 10]

Sin[y]

x = 1.1
u = SetPrecision[ArcCosh[x], 10]
v = SetPrecision[ArcSinh[x], 10]

Cosh[u]
Sinh[v]

 

 

                     <* Notebook 의 각 cell 에 입력한 모습 *>

 

          <* Notebook 의 각 cell 마다 Shift + Enter 키를 눌러 결과를 확인한 모습 *>

 

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Octave 언어에서는 asin 함수로 구현되어 있다.

또한 Gnuplot 언어에는 쌍곡선함수 sinhcosh 의 역함수로 각각 asinhacosh 가 구현되어 있지만, 비교를 위해 arcsinharccosh 라는 이름의 함수로 아래의 소스에 구현해 보았다.

소스 파일을 저장할 때 확장명을 plt 로 해도 되고 dem 으로 해도 된다. Gnuplot 에서 저정된 소스 파일을 load 하면 실행결과가 출력된다.

# Filename: estArcSine.plt
#
# Execute: load '저장경로/testArcSine.plt'
#
# Date: 2013. 1. 8.
# Copyright (c) PKim (pkim __AT__ scripts.pe.kr)

arccosh(x) = log(x + sqrt(x*x - 1))
arcsinh(x) = log(x + sqrt(x*x + 1))

x = -0.9
y = asin(x)
print "y = asin(", x, ") = ", y
print "sin(", y, ") = ", sin(y)
print ""

x = 1.1
u = acosh(x)
print "u = acosh(", x, ") = ", u
print "cosh(", u, ") = ", cosh(u)
print ""

v = asinh(x)
print "v = asinh(", x, ") = ", v
print "sinh(", v, ") = ", sinh(v)
print ""

print "arccosh(", x, ") = ", arccosh(x)
print "arcsinh(", x, ") = ", arcsinh(x)
print ""

##################################
# Output:
# -------------------------------------
# y = asin(-0.9) = -1.11976951499863
# sin(-1.11976951499863) = -0.9
#
# u = acosh(1.1) = 0.443568254385115
# cosh(0.443568254385115) = 1.1
#
# v = asinh(1.1) = 0.950346929821134
# sinh(0.950346929821134) = 1.1
#
# arccosh(1.1) = 0.443568254385115
# arcsinh(1.1) = 0.950346929821134  
##################################

 

 

        <* 저장된 Gnuplot 에서 소스 파일 testArcSine.plt 를 load 하여 실행한 화면 *>

 

 

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, Octave 언어에서는 asin 함수로 구현되어 있다.

또한 Octave 언어에는 쌍곡선함수 sinhcosh 의 역함수로 각각 asinhacosh 가 구현되어 있지만, 비교를 위해 arcsinharccosh 라는 이름의 함수로 아래의 소스에 구현해 보았다.

%{
% Filename: testArcSine.m
%
% Execute: octave -qf testArcSine.m
%
% Date: 2013. 1. 8.
% Copyright (c) pkim _AT_ scripts.pe.kr
%}


function y = arcsinh(x)
    y = log(x + sqrt(x*x + 1));
endfunction


function y = arccosh(x)
    y = log(x + sqrt(x*x - 1));
endfunction


x = -0.9;
y = asin(x);

printf("y = asin(%g) = %.9f\n", x,  y);
printf("sin(y) = sin(%.9f) = %g\n", y, sin(y));
printf("\n");

x = 1.1;
u = acosh(x);
printf("u = acosh(%g) = %.10f\n", x,  u);

v = asinh(x);
printf("v = asinh(%g) = %.10f\n", x, v);

printf("cosh(u) = cosh(%.10f) = %g\n", u, cosh(u));
printf("sinh(v) = sinh(%.10f) = %g\n", v, sinh(v));
printf("\n");

printf("arccosh(%g) = %.10f\n", x, arccosh(x));
printf("arcsinh(%g) = %.10f\n", x, arcsinh(x));

#{
Output:
y = asin(-0.9) = -1.119769515
sin(y) = sin(-1.119769515) = -0.9

u = acosh(1.1) = 0.4435682544
v = asinh(1.1) = 0.9503469298
cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1

arccosh(1.1) = 0.4435682544
arcsinh(1.1) = 0.9503469298

#}

 

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데,

Boo 언어에서는 닷넷에서 사용하는  Math.Asin() 함수를 쓰면 된다.

이를 사용하기 위해서는 import 구문

import System

이 필요하다.

 

Boo 언어는 Pytyhon 언어와 비슷하며, 닷넷 용이라는 점에서는 IronPython 과 더더욱 비슷하다.

다음 소스는 Boo 인타프리터 booi 로 실행해도 되고, Boo 컴파일러 booc 로 컴파일하여 생성된 실행 파일을 실행해도 된다. booc 로 컴파일이 성공적으로 끝나면 *.exe 파일과 *.pdb 파일이 생성된다.

#  Filename: testArcSine.boo
#
#   Execute: booi testArcSine.boo
#
#    Or
#
#   Compile: booc testArcSine.boo
#   Execute: testArcSine.boo
#
# Date: 2013. 1. 6.
# Copyright (c) pkim _AT_ scripts.pe.kr

import System

def asinh(x as double) as double:
    y = Math.Log(x + Math.Sqrt(x*x + 1))
    return y

def acosh(x as double) as double:
    y = Math.Log(x + Math.Sqrt(x*x - 1))
    return y


# 실행 시작 지점
x = -0.9
y = Math.Asin(x)
print string.Format("y = asin({0}) = {1:F9}", x,  y)
print string.Format("sin(y) = sin({0:F9}) = {1}", y, Math.Sin(y))
print

x = 1.1
u = acosh(x)
print string.Format("u = acosh({0}) = {1:F10}", x,  u)

v = asinh(x)
print string.Format("v = asinh({0}) = {1:F10}", x,  v)

print string.Format("cosh(u) = cosh({0:F10}) = {1}", u,  Math.Cosh(u))
print string.Format("sinh(v) = sinh({0:F10}) = {1}", v,  Math.Sinh(v))

/*
Output:
y = asin(-0.9) = -1.119769515
sin(y) = sin(-1.119769515) = -0.9

u = acosh(1.1) = 0.4435682544
v = asinh(1.1) = 0.9503469298
cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1
*/

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데,

 Objective-C 언에에서는 C 언어나 C++ 언어에서 처럼 asin 함수로 구현되어 있다.

아래의 소스는 C 언어용 소스를 아두 조금 고친 것으로서, 윈도우용 Dev-CPP IDE 에서 Ctrl+F11 을 클릭하면 캄파일되는 소스이다.

/*
 *  Filename: testArcSine.m 
 *
 *   Compile: Click Ctrl+F11
 *
 *   Execute: testArcSine
 *
 *      Date: 2013. 1. 1.
 *   Copyright (c) pkim _AT_ scripts.pe.kr
 */

#import <Foundation/Foundation.h>   // for exit()
#import <stdio.h>
#import <string.h>
#import <math.h>

double asinh(double x) {
    double y = log(x + sqrt(x*x + 1));
    return y;
}

double acosh(double x) {
    double y = log(x + sqrt(x*x - 1));
    return y;
}

typedef struct _PAIR {
    double x1;
    double x2;
} PAIR;

void printUsing() {
    printf("Using: testGoldenRatio [-h|-help]\n");
    printf("This calculates the value of the golden ratio.\n");
}

// 이차방정식 a x^2 + b x + c  = 0 의 근을 구한다.
PAIR *findQuadraticRoot(double a, double b, double c) {
    static PAIR zeros;
    if (a == 0.0) {
        fprintf(stderr, "Since the highest coefficient is zero, the given equation is not a quadratic equation.\n");
        exit(1);
    }
    else if (b*b - 4*a*c < 0.0) {
        fprintf(stderr, "Since the discriminant %f is negative, the given equation has no real root.\b", b*b - 4*a*c);
    exit(1);
    }

    zeros.x1 = (-b + sqrt(b*b - 4*a*c)) / (2.0 * a);
    zeros.x2 = (-b - sqrt(b*b - 4*a*c)) / (2.0 * a);
    return (PAIR *)&zeros;
}

void main(int argc, const char *argv[]) {
    double u, v;
    double x = -0.9;
    double y = asin(x);

    printf("y = asin(%g) = %.9f\n", x,  y);
    printf("sin(y) = sin(%.9f) = %g\n", y, sin(y));
    printf("\n");

    x = 1.1;
    u = acosh(x);
    printf("u = acosh(%g) = %.10f\n", x,  u);

    v = asinh(x);
    printf("v = asinh(%g) = %.10f\n", x, v);

    printf("cosh(u) = cosh(%.10f) = %g\n", u, cosh(u));
    printf("sinh(v) = sinh(%.10f) = %g\n", v, sinh(v));
}

/*
Output:
y = asin(-0.9) = -1.119769515
sin(y) = sin(-1.119769515) = -0.9

u = acosh(1.1) = 0.4435682544
v = asinh(1.1) = 0.9503469298
cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1
*/

 

 

Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, D 언어에서는 asin 함수로 구현되어 있다. D 언어에서 지수함수, 로그함수, 삼각함수, 역삼각함수, 쌍곡선함수, 역쌍곡선함수 등을 이용하려면 import 구문

import std.math;

가 필요하다.

D 언어에 쌍곡선함수 sinhcosh 의 역함수로 각각 asinhacosh 가 이미 구현되어 있지만, 아래의 소스에서 arcsinharccosh 라는 이름의 함수로 자체 구현해 보았다.

삼각함수 sin, cos, tan 값은 cast(double) 로 캐스팅해서 (double 타입으로) 명시적인 타입변환해야 한다. 안 그러면 전혀 다른 값이 되어 버린다. (real 타입과의 충돌 때문에 이런 버그(?)가 있는 것 같은데, 이런 현상은 DMD 1.0 이든 DMD 2,0 이든 마찬가지이다.) 쌍곡선함수 sinh, cosh, tanh 값에는 이런 현상이 없다.

 

/*
 * Filename: testArcSine.d
 *
 * Cpmpile: dmd testArcSine.d
 * Execute: ./testArcSine
 *
 * Date: 2013. 1. 4.
 * Copyright (c) pkim _AT_ scripts.pe.kr
 */

import std.c.stdio;    // printf 함수 사용을 위해
import std.stdio;    // writeln 함수 사용을 위해
import std.math;

double arcsinh(double x) {
    double y = log(x + sqrt(x*x + 1));
    return y;
}

double arccosh(double x) {
    double y = log(x + sqrt(x*x - 1));
    return y;
}

int main (string[] args) {
    double x, y, u, v;

    x = -0.9;
    y = asin(x);

    printf("y = asin(%g) = %.9f\n", x, y);
    printf("sin(y) = sin(%.9f) = %g\n", y, cast(double) sin(y));
    writeln("");
   
    x = 1.1;
    u = acosh(x);
    printf("u = acosh(%g) = %.10f\n", x, u);

    v = asinh(x);
    printf("v = asinh(%g) = %.10f\n", x, v);

    printf("cosh(u) = cosh(%.10f) = %g\n", u, cosh(u));
    printf("sinh(v) = sinh(%.10f) = %g\n", v, sinh(v));
    writeln("");

    printf("arccosh(%g) = %.10f\n", x, arccosh(x));
    printf("arcsinh(%g) = %.10f\n", x, arcsinh(x));
    return 0;
}

/*
Output:
y = asin(-0.9) = -1.119769515
sin(y) = sin(-1.119769515) = -0.9

u = acosh(1.1) = 0.4435682544
v = asinh(1.1) = 0.9503469298
cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1

arccosh(1.1) = 0.4435682544
arcsinh(1.1) = 0.9503469298
*/

 

 

 

'프로그래밍 > D' 카테고리의 다른 글

if ... else ... 조건문 사용 예제 for D  (0) 2008.03.08
명령행 인자 처리 예제 for D  (0) 2008.03.08
for 반복문 예제 For D  (0) 2008.03.08
Hello 예제 for D  (0) 2008.03.08
Posted by Scripter
,

역삼각함수란 삼각함수의 역함수를 의미하고,

역쌍곡선함수란 쌍곡선함수의 역함수를 의미한다.

수학에서 sin 함수의 역함수는 arcsin 으로 표기되는데, PHP 언어에서는 asin 함수로 구현되어 있다.

또한 PHP 언어에는 쌍곡선함수 sinhcosh 의 역함수로 각각 asinhacosh 가 구현되어 있지만, 아래의 소스에서 arcsinharccosh 라는 이름의 함수로 자체 구현하였다.

<?php
/*
 * Filename: testArcSine.php
 *
 * Execute: php testArcSine.php
 *
 * Date: 2013. 1. 4.
 * Copyright (c) pkim _AT_ scripts.pe.kr
 */

#include <stdio.h>
#include <math.h>

function arcsinh(&$x, &$y) {
    $y = log($x + sqrt($x*$x + 1.0));
    return $y;
}

function arccosh(&$x, &$y) {
    $y = log($x + sqrt($x*$x - 1.0));
    return $y;
}


$x = -0.9;
$y = asin($x);
echo "y = asin($x) = " . sprintf("%.9f", $y) . "\n";
echo "sin(y) = sin(" , sprintf("%.9f", $y) . ") = " . sin($y) . "\n";
echo "\n";

$x = 1.1;
$u = acosh($x);
echo "v = acosh($x) = ". sprintf("%.10f", $u) . "\n";
$v = asinh($x);
echo "v = asinh($x) = ". sprintf("%.10f", $v) . "\n";

echo "cosh(u) = cosh(" . sprintf("%.10f", $u) . ") = ". cosh($u) . "\n";
echo "sinh(v) = sinh(" . sprintf("%.10f", $v) . ") = ". sinh($v) . "\n";
echo "\n";

echo "arccosh($x) = ". sprintf("%.10f", arccosh($x)) . "\n";
echo "arcsinh($x) = ". sprintf("%.10f", arcsinh($x)) . "\n";

/*
Output:
y = asin(-0.9) = -1.119769515
sin(y) = sin(-1.119769515) = -0.9

v = acosh(1.1) = 0.4435682544
v = asinh(1.1) = 0.9503469298
cosh(u) = cosh(0.4435682544) = 1.1
sinh(v) = sinh(0.9503469298) = 1.1

arccosh(1.1) = 0.4435682544
arcsinh(1.1) = 0.9503469298
*/

?>

 

 

 

Posted by Scripter
,