HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1227
Hiroaki SoftwareHSPでべき算をする方法6解決


Hiroaki Software

リンク

2008/12/27(Sat) 11:37:16|NO.22009

以下にべき算をする関数を書きます

#ifndef power_lib #define power_lib #module #defcfunc power double x,int n if n==0{ out=1.0 }else{ nb=n if nb<0:nb=-1*nb for buf,0,nb,1 if (buf==0){ buf1=1.0 } buf1=x*buf1 next out=buf1 if n<0{ out=1.0/buf1 } } return out #global #endif


書式について
数値型変数=power(底,指数)
です

各値について

底=小数およびマイナス値可能
指数=少数不可、マイナス値可能

です
何かに使用してください



この記事に返信する


SYAM

リンク

2008/12/27(Sat) 11:53:54|NO.22013

0,負数 を入力するとマズいことに!



Hiroaki Software

リンク

2008/12/27(Sat) 12:01:42|NO.22015

失礼しました。
書き直します。

#ifndef power_lib #define power_lib #module #defcfunc power double x,int n mref kekka,65 if n==0{ out=1.0 kekka="OK" }else{ nb=n if nb<0:nb=-1*nb for buf,0,nb,1 if (buf==0){ buf1=1.0 } buf1=x*buf1 next out=buf1 kekka="OK" if n<0{ if buf1=0{ Kekka="NG!" }else{ out=1.0/buf1 kekka="OK" } } } return out #global #endif



Hiroaki Software

リンク

2008/12/27(Sat) 12:06:32|NO.22016

いま思ったが
NO.22015

mref kekka,65

kekka="OK"

Kekka="NG!"
は削除しても大丈夫でした
要するに余計なことしてました。
それと
power()関数の命令化はご自由に!



SYAM

リンク

2008/12/27(Sat) 13:24:18|NO.22019

ツッコミだけだといぢわるみたいなので
整数専用のを。

#defcfunc ipower int p1, int p2 v = 1 p = p1 n = p2 repeat 32 if(n&1) : v = v*p p = p*p n = n>>1 loop return v
多分、正しい結果が -2147483648〜2147483647 の範囲になる計算には使えます。



通りすがり

リンク

2008/12/27(Sat) 14:54:14|NO.22020

hspmath.asのpowではだめなんですか?
あれは指数対数で書かれていますが…



GENKI

リンク

2008/12/27(Sat) 16:03:17|NO.22023

> hspmath.asのpowではだめなんですか?

む、すでにベスト回答でてたのか…。
ちなみに実数にも対応してます。

#include "hspmath.as" mes ""+pow(2,-0.5)


math.as
http://quasiquote.org/hspwiki/HSP3%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%3amath.as



ONION software Copyright 1997-2023(c) All rights reserved.