             AREA |C$$code|,CODE,READONLY

             GET "Hdr.Common"

             IMPORT vfp_exp
             IMPORT vfp_ln

             EXPORT vfp_sinh
vfp_sinh     mov ip,sp
             stmdb sp!,{r4,fp,ip,lr,pc}
             sub fp,ip,#4
             mov r4,#1
             p1arg
             vcmp.F64 d0,#0
             vmrs apsr_nzcv,fpscr
             mvnmi r4,r4
             vnegmi.F64 d0,d0
             pcall
             bl vfp_exp
             vmov.F64 d4,#1.0
             vdiv.F64 d1,d4,d0
             vmov.F64 d4,#0.5
             vsub.F64 d0,d0,d1
             movs r4,r4
             vnegmi.F64 d0,d0
             vmul.F64 d0,d0,d4
             pres
             ldmdb fp,{r4,fp,sp,pc}

             EXPORT vfp_cosh
vfp_cosh     mov ip,sp
             stmdb sp!,{fp,ip,lr,pc}
             sub fp,ip,#4
             p1arg
             vcmp.F64 d0,#0
             vmrs apsr_nzcv,fpscr
             vnegmi.F64 d0,d0
             pcall
             bl vfp_exp
             vmov.F64 d4,#1.0
             vdiv.F64 d1,d4,d0
             vmov.F64 d4,#0.5
             vadd.F64 d0,d0,d1
             vmul.F64 d0,d0,d4
             pres
             ldmdb fp,{fp,sp,pc}

             EXPORT vfp_tanh
vfp_tanh     mov ip,sp
             stmdb sp!,{r4,fp,ip,lr,pc}
             sub fp,ip,#4
             mov r4,#1
             p1arg
             vcmp.F64 d0,#0
             vmrs apsr_nzcv,fpscr
             mvnmi r4,r4
             vnegmi.F64 d0,d0
             pcall
             bl vfp_exp
             vmov.F64 d4,#1.0
             vdiv.F64 d1,d4,d0
             vsub.F64 d4,d0,d1
             vadd.F64 d1,d0,d1
             vdiv.F64 d0,d4,d1
             movs r4,r4
             vnegmi.F64 d0,d0
             pres
             ldmdb fp,{r4,fp,sp,pc}

             EXPORT vfp_arcsinh
vfp_arcsinh  mov ip,sp
             stmdb sp!,{fp,ip,lr,pc}
             sub fp,ip,#4
             p1arg
             vmul.F64 d4,d0,d0
             vmov.F64 d5,#1.0
             vadd.F64 d5,d4,d5
             vsqrt.F64 d4,d5
             vadd.F64 d0,d4,d0
             pcall
             ldmdb fp,{fp,sp,lr}
             b vfp_ln

             EXPORT vfp_arccosh
vfp_arccosh  mov ip,sp
             stmdb sp!,{fp,ip,lr,pc}
             sub fp,ip,#4
             p1arg
             vmul.F64 d4,d0,d0
             vmov.F64 d5,#1.0
             vsub.F64 d5,d4,d5
             vsqrt.F64 d4,d5
             vadd.F64 d0,d4,d0
             pcall
             ldmdb fp,{fp,sp,lr}
             b vfp_ln

             EXPORT vfp_arctanh
vfp_arctanh  mov ip,sp
             stmdb sp!,{fp,ip,lr,pc}
             sub fp,ip,#4
             p1arg
             vmov.F64 d5,#1.0
             vadd.F64 d4,d0,d5
             vsub.F64 d5,d5,d0
             vdiv.F64 d0,d4,d5
             pcall
             bl vfp_ln
             vmov.F64 d5,#0.5
             vmul.F64 d0,d0,d5
             pres
             ldmdb fp,{fp,sp,pc}

             END
