CC = gcc
+
CFLAGS = -g -lm
-.PHPNY: clean
+
+.INTERMEDIATE: hoc.o
+
hoc1: hoc.o
$(CC) $(CFLAGS) -o $@ $^
+
clean:
- rm -f hoc1 hoc.tab.c *.o
- make clean -sC test
+ rm -f hoc1 *.o
+
check:
- @make -sC test
+ $(MAKE) -sC test
+
#include <math.h>
%}
-%token NUMBER
+%token NUMBER EOL
%left '+' '-' /* left associative, same precedence */
%left '*' '/' '%' /* left associative, higher precedence */
%left UNARYMINUS UNARYPLUS
%right '^'
%%
list: /* nothing */
- | list '\n'
- | list expr '\n' { printf("\t%.8g\n", $2); }
+ | list EOL
+ | list expr EOL { printdouble($2); }
;
expr: NUMBER { $$ = $1; }
| expr '+' expr { $$ = $1 + $3; }
yyparse();
}
+int printdouble(double f) {
+ if((f > 0 && f < 1e-15) || (f < 0 && f > -1e-15)) {
+ printf("\t%.20e\n", f);
+ } else {
+ printf("\t%.20f\n", f);
+ }
+}
+
int yylex(){
int c;
while((c = getchar()) == ' ' || c == '\t') {
scanf("%lf", &yylval);
return NUMBER;
}
- if(c == '\n') {
- lineno++;
+ if(c == '\n' || c == ';') {
+ if(c == '\n') {
+ lineno++;
+ }
+ return EOL;
}
return c;
}
--- /dev/null
+1.txt
+*.log
+diff.txt
+err.txt
+# autotest.mk > test_template > Define.mk
+# 自動テスト用の変数、マクロ定義
+
+SHELL=/bin/sh
+
######################################################################
# テストグループのディレクトリー
######################################################################
+
# テストグループとテストの両方で使う変数を定義したファイル
DEF_FILE := Define.mk
# テストのMakefileにインクルードするファイル
TEST_MAKEFILE := Test.mk
-# テストグループログファイル
-GROUP_LOG_FILE := $(shell echo $(GROUP) | tr '[a-z]' '[A-Z]').log
-
######################################################################
# テストのディレクトリー
######################################################################
+
# Makefile
-MAKEFILE := Makefile
+MAKEFILE ?= Makefile
# 現在の日時
DATE = $(shell date +"%F %T")
# テストコマンドファイル
-CMD_FILE := cmd
+CMD_FILE ?= cmd
# テスト説明ファイル
-DESC_FILE := desc.txt
+DESC_FILE ?= desc.txt
# テスト想定結果ファイル
-TEST0_FILE := 0.txt
+TEST0_FILE ?= 0.txt
# テスト結果ファイル
-TEST1_FILE := 1.txt
+TEST1_FILE ?= 1.txt
# テストの、想定結果と結果の差分ファイル
-DIFF_FILE := diff.txt
+DIFF_FILE ?= diff.txt
# テストエラーファイル
-ERR_FILE := err.txt
+ERR_FILE ?= err.txt
# テストログファイル
-LOG_FILE := test.log
+LOG_FILE ?= test.log
# 実行時間ファイル
-TIME_FILE := time.log
+TIME_FILE ?= time.log
######################################################################
# コマンド
######################################################################
-CP := cp
+CP ?= cp
+
+CAT ?= cat
+
+MKDIR ?= mkdir
+
+RM ?= rm -f
+
+ECHO ?= echo
+
+TIME ?= /usr/bin/time --quiet
+
+DIFF ?= diff -c
-CAT := cat
+DEV_NULL ?= /dev/null
-MKDIR := mkdir
+CHMOD ?= chmod
-RM := rm -f
+######################################################################
+# エラー
+######################################################################
-ECHO := echo
+# chk_var_null: 引数がNULLの場合、エラー
+# 用例: $(call chk_var_null,var)
+define chk_var_null
+ $(if $1,,$(error NULL argument))
+endef
-TIME := /usr/bin/time
+# chk_file_ext: 指定されたファイルが実在する場合、エラー
+# 用例: $(call chk_file_ext,file)
+define chk_file_ext
+ $(if $(wildcard $1),$(error $1 exists in $(shell pwd)))
+endef
-DIFF := diff -c
+# chk_file_notext: 指定されたファイルが実在しない場合、エラー
+# 用例: $(call chk_file_notext,file)
+define chk_file_notext
+ if test ! -s $1; then $(error $1 not exists in $(shell pwd)); fi
+endef
-DEV_NULL := /dev/null
+######################################################################
+# マクロ
+######################################################################
-CHMOD := chmod
+# 指定したディレクトリーを作成
+# 用例: $(call create_dir,name)
+define create_dir
+ $(call chk_var_null,$1)
+ $(call chk_file_ext,$1)
+ $(MKDIR) $1
+endef
-# TESTディレクトリーのMakefileを作成
-# 用例: $(call create_testmakefile,file)
-define create_testmkfile
- $(foreach mkfile, $(DEF_FILE) $(TEST_MAKEFILE), $(ECHO) "include ../$(mkfile)" >>$1; )
+# テストごとのMakefileを作成
+# 用例: $(call create_makefile,file)
+define create_makefile
+ $(RM) $1
+ $(foreach mkfile,$(DEF_FILE) $(TEST_MAKEFILE),$(ECHO) "include ../$(mkfile)" >>$1; )
+endef
+
+# リストで指定したディレクトリーでmakeを実行
+# 用例: $(call make_tests,list_dir,target)
+define make_tests
+ $(foreach dir,$1,$(call make_test_each,$(dir),$2))
+endef
+
+# 指定したディレクトリーでMakeを実行
+# 用例: $(call make_test_each,tests,target)
+define make_test_each
+ $(MAKE) $2 -sC $1;
+
+endef
+
+# 引数のファイルをチェックし、内容がない場合は削除
+# 用例: $(call rm_null,file)
+define rm_null
+ if test ! -s $1; then $(RM) $1; fi
endef
# 説明ファイルの内容を、引数のファイルに出力。
-# 用例: $(call desc_log,file)
+# 用例: $(call desc_log,file_out)
define desc_log
- $(if $(wildcard $(DESC_FILE)),$(CAT) $(DESC_FILE) >>$1)
+ if test -s $(DESC_FILE); then $(CAT) $(DESC_FILE) >>$1; fi
endef
-# テスト実行の経過時間をファイルに出力。引数は、テスト名、コマンドファイル、出力ファイル
+# テスト実行の経過時間を、ファイルに出力して表示。
+# 引数は、テスト名、コマンドファイル、出力ファイル
# 用例: $(call time_cmd,name,file_cmd,file_out)
define time_cmd
- $(TIME) -f "$1: %E" >>$3 $2>$(DEV_NULL)
- $(CAT) $3
+ $(TIME) -f"$1: %E" -o $3 ./$2 >$(DEV_NULL) 2>&1
endef
# テスト実行コマンド。引数は、コマンドファイル、出力ファイル、エラーファイル
# エラー発生時は、エラー出力を出力ファイルとエラーファイルに保存。
# 用例: $(call exec_cmd,file_cmd,file_out,file_err)
define exec_cmd
- $(CHMOD) u+x $1
$(CAT) $1 >$2
./$1 >>$2 2>$3
- if test -s $3; then $(CAT) $3 >>$2; else $(RM) $3; fi
+ if test -s $3; then $(CAT) $3 >>$2; fi
+ $(call rm_null,$3)
endef
-# 2つのファイルを比較し、差分ファイルを作成。引数は、ファイル0、ファイル1、差分ファイル
-# 用例: $(call diff_testfiles,file0,file1)
-define diff_testfiles
- diff $1 $2 >$3 2>&1
- if test ! -s $3; then $(RM) $3; fi
+# 2つのファイルを比較し、差分ファイルを作成。
+# 引数は、2ファイルのリスト、差分ファイル
+# 用例: $(call diff_files,files,file_out)
+define diff_files
+ $(DIFF) $1 >$2 2>&1
+ $(call rm_null,$2)
endef
-# 差分ファイルの内容をログファイルに出力。引数は、テスト名、差分ファイル、ログファイル
+# 差分ファイルの内容をログファイルに出力。
+# 引数は、テスト名、差分ファイル、ログファイル
# 用例: $(call test_log,name,file_diff,file_log)
define test_log
- $(ECHO) "$1: Test $(if $(wildcard $2),Failure,Success) $(DATE)" >>$3
+ if test ! -s $2; then RES=Success; else RES=Failure; fi; $(ECHO) "$1: Test $$RES $(DATE)" >>$3
endef
-# テストごとのログファイルをグループログファイルに出力。引数は、テストのリスト、グループログファイル
-# 用例: $(call group_log_each,tests,file_group_log)
-define group_log_each
- $(foreach target,$1,$(call group_log,$(target),$2))
-endef
-
-# テストのログファイルをグループログファイルに出力。引数は、テスト、グループログファイル
-# 用例: $(call group_log_each,tests,file_group_log)
+# テストごとのファイルをグループファイルに出力
+# 引数は、テストのリスト、グループファイル、テストファイル
+# 用例: $(call group_log,files_test_log,file_group_log)
define group_log
- $(ECHO) >>$2
- if test -s $1/$(LOG_FILE); then $(CAT) $1/$(LOG_FILE) >>$2; else $(ECHO) $1 ": no log." >>$2; fi
+ $(foreach target,$1,$(call group_log_each,$(target),$2))
endef
-LOG_GROUP = for target in $^; do ($(ECHO) <$$target/$(LOG_FILE) && $(CAT) <$$target/$(LOG_FILE)) >>$@ || $(ECHO) $$target ": no log." >>$@; done
-
-REPORT_GROUP = $(ECHO) "$(GROUP): $(SUCCESS_TEST) / $(ALL_TEST) tests passed. Details in `pwd`/$(GROUP_LOG_FILE)"; \
- if test $(FAIL_TEST) -eq 0; then $(ECHO) "$(GROUP): All tests are succeded."; fi
-
-LOG_TIME_REPORT = for target in ^; do ($(ECHO)<$$target/$(LOG_FILE) && $(CAT) <$$target/$(TIME_FILE)) >>$@ || $(ECHO) $$target ": no time." >>$@; done
-
-######################################################################
-# エラー
-######################################################################
+# テストのログファイルをグループログファイルに出力。引数は、テスト、グループログファイル
+# 用例: $(call group_log_each,file_test_log,file_group_log)
+define group_log_each
+ if test -s $1; then $(CAT) $1 >>$2; else $(ECHO) $(dir $1)": no log" >>$2; fi
+ echo >>$2;
-# chk_var_null: 変数がNULLの場合、エラー
-# 用例: $(call chk_var_null, var)
-define chk_var_null
- $(if $($1),,$(error $1 is NULL))
endef
-# chk_file_ext: 変数で指定されたファイルが実在する場合、エラー
-# 用例: $(call chk_file_ext, var)
-define chk_file_ext
- $(if $(wildcard $($1)),$(error $(wildcard $($1)) exists))
+# テストの結果を、グループログファイルを元にレポート。
+# 引数は、グループログファイル
+# 用例: $(call group_report,name,file_log,file_report)
+define group_report
+ $(ECHO) "$1: $(SUCCESS_TEST) / $(ALL_TEST) tests passed. Details in $2" >$3;
+ if test $(FAIL_TEST) -eq 0; then $(ECHO) "$1: All tests are succeded." >>$3; fi
endef
# autotest.mk > template > Group.mk
# テストグループのMakefile
+#
+# オペレーター
+# make : すべてのテストを実施し、ログファイルを作成
+# make check : ↓
+# make create : TESTNAMEで指定されたテストを新規に作成
+# make set : すべてのテストの、想定結果を出力
+# make checkeach: すべてのテストを実施
+# make report : ログファイルから、テストの結果をレポート
+# make clean : すべてのテストで、"make" で生成されたファイルをクリア
+# make cleanall: すべてのテストで、"make" と "make set" で生成されたファイルをクリア
+
+SHELL = /bin/sh
######################################################################
# テストグループの定義
GROUP := $(notdir $(GROUP_DIR))
# テスト名。カレントディレクトリー内の、名前が大文字または.以外で始まるディレクトリー
-TESTS := $(notdir $(shell find -maxdepth 1 -name "[^A-Z.]*" -type d))
+TESTS = $(notdir $(shell find -maxdepth 1 -name "[^A-Z.]*" -type d))
+
+# テストごとのログファイル
+TEST_LOG_FILES := $(foreach test,$(TESTS),$(test)/$(LOG_FILE))
+
+# テストグループログファイル
+GROUP_LOG_FILE := $(shell echo $(GROUP) | tr '[a-z]' '[A-Z]').log
+
+# テストグループレポートファイル
+GROUP_REPORT_FILE := Report.log
# 成功したテストの数。テストグループログファイルから取得
SUCCESS_TEST = $(shell grep "^[^A-Z.].*: Test Success" $(GROUP_LOG_FILE) | wc -l)
# すべてのテストの数
ALL_TEST = $(shell expr $(SUCCESS_TEST) + $(FAIL_TEST))
-#テストグループ計時ファイル
-GROUP_TIME_FILE = $(shell echo $(GROUP) | tr '[a-z]' '[A-Z]')_time.log
+# テストごとの実行時間ファイル
+TEST_TIME_FILES := $(foreach test,$(TESTS),$(test)/$(TIME_FILE))
+
+# テストグループ実行時間ファイル
+GROUP_TIME_FILE := $(shell echo $(GROUP) | tr '[a-z]' '[A-Z]')_time.log
######################################################################
-# オペレーター
-# make : すべてのテストを実施し、ログファイルを作成
-# make check : ↓
-# make create : TESTNAMEで指定されたテストを新規に作成
-# make set : すべてのテストの、想定結果を出力
-# make checkeach: すべてのテストを実施
-# make report : ログファイルから、テストの結果をレポート
-# make clean : すべてのテストで、"make" で生成されたファイルをクリア
-# make cleanall: すべてのテストで、"make" と "make set" で生成されたファイルをクリア
+# ターゲット
######################################################################
-.PHONY: check create set checkeach report clean cleanall
+.PHONY: check checkall time create clean cleantime
-check: checkeach report
-
-create:
- @$(call chk_var_null,TEST)
- @$(call chk_file_ext,TEST)
- @$(MKDIR) $(TEST)
- @$(call create_testmkfile,$(TEST)/$(MAKEFILE))
+check checkall: clean $(GROUP_REPORT_FILE)
+ @$(CAT) $(GROUP_REPORT_FILE)
-set: $(TESTS)
- $(MAKE) set -C $^
+time: cleantime $(GROUP_TIME_FILE)
+ @$(CAT) $(GROUP_TIME_FILE)
-checkeach: $(TESTS)
- @$(RM) $(GROUP_LOG_FILE)
- TARGET=check
+create:
+ @$(call create_dir,$(TEST))
+ @$(call create_makefile,$(TEST)/$(MAKEFILE))
-$(GROUP_LOG_FILE): $(TESTS)
- @$(LOG_GROUP)
+clean:
+ @$(call make_tests,$(TESTS),$@)
+ @$(RM) $(GROUP_REPORT_FILE) $(GROUP_LOG_FILE) $(GROUP_TIME_FILE)
-report: $(GROUP_LOG_FILE)
- @$(REPORT_GROUP)
+cleantime:
+ @$(call make_tests,$(TESTS),$@)
+ @$(RM) $(GROUP_TIME_FILE)
-time: timeeach $(GROUP_TIME_FILE)
- @$(CAT) $(GROUP_TIME_FILE)
+$(GROUP_REPORT_FILE): $(GROUP_LOG_FILE)
+ @$(call group_report,$(GROUP),$^,$@)
-$(GROUP_TIME_FILE): $(TESTS)
- @$(LOG_TIME_REPORT)
+$(GROUP_LOG_FILE): $(TEST_LOG_FILES)
+ @$(call make_tests,$(TESTS),$(MAKECMDGOALS))
+ @$(call group_log,$^,$@)
-timeeach: $(TESTS)
- @$(MAKE) time -C $^
+$(GROUP_TIME_FILE): cleantime $(TEST_TIME_FILES)
+ @$(call group_log,$(TEST_TIME_FILES),$@)
-clean: $(TESTS)
- @echo $^ && $(MAKE) clean -C $^
- @$(RM) $(GROUP_LOG_FILE)
+$(TEST_LOG_FILES):
+ @$(MAKE) check -sC $(dir $@)
-$(TESTS):
- @echo $@
- @$(MAKE) $(TARGET) -C $@
+$(TEST_TIME_FILES):
+ @$(MAKE) time -sC $(dir $@)
# make clean : "make" で作成されたファイルをクリア
# make cleanall: "make" と "make set" で作成されたファイルをクリア
+SHELL = /bin/sh
+
# テスト名。カレントディレクトリー名から取得
TEST = $(notdir $(shell pwd))
check: clean $(LOG_FILE)
+checkall: check $(TIME_FILE)
+ @$(CAT) $(TIME_FILE) >>$(LOG_FILE)
+
set: $(TEST0_FILE)
+ @$(CAT) $^
reset: cleanall $(TEST0_FILE)
+ @$(CAT) $(TEST0_FILE)
time: cleantime $(TIME_FILE)
cleanall: clean
@$(RM) $(TEST0_FILE)
+$(CMD_FILE):
+ @$(call chk_file_notext,$@)
+ @$(CHMOD) u+x $@
+
$(TEST0_FILE) $(TEST1_FILE): $(CMD_FILE)
- @$(call exec_cmd,$^,$@,$(ERR_FILE))
+ @-$(call exec_cmd,$^,$@,$(ERR_FILE))
-$(DIFF_FILE): $(TEST1_FILE)
- @$(call diff_testfiles,$(TEST0_FILE),$(TEST1_FILE),$@)
+$(DIFF_FILE): $(TEST0_FILE) $(TEST1_FILE)
+ @-$(call diff_files,$^,$@)
$(LOG_FILE): $(DIFF_FILE)
+ @$(RM) $@
@$(call desc_log,$@)
@$(call test_log,$(TEST),$^,$@)
$(TIME_FILE): $(CMD_FILE)
- @$(call desc_log,$@)
- @$(call time_cmd,$(TEST),./$^,$@)
+ @-$(call time_cmd,$(TEST),$^,$@)
cat in.txt && ../../hoc1 < in.txt
+1+2
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
-1.23456789 + 0.123456789
-1000000 + .1
-10000000 + .1
-1.2345678901e100 + 1.2345678901e91
+1.23 + 5.43
+1125899906842623 + .1
+1125899906842624 + .1
+1.23e100 + 5.43e100
+1
- 55
- 1.3580247
- 1000000.1
- 10000000
- 1.2345679e+100
- 1
+ 3.00000000000000000000
+ 55.00000000000000000000
+ 6.66000000000000014211
+ 1125899906842623.12500000000000000000
+ 1125899906842624.00000000000000000000
+ 66599999999999998844490010772679401071096411257064020483599845015161551995588590762666824971868700672.00000000000000000000
+ 1.00000000000000000000
+1+2
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
-1.23456789 + 0.123456789
-1000000 + .1
-10000000 + .1
-1.2345678901e100 + 1.2345678901e91
+1.23 + 5.43
+1125899906842623 + .1
+1125899906842624 + .1
+1.23e100 + 5.43e100
+1
cat in.txt && ../../hoc1 < in.txt
9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 1
- 9999999999999999860310597602564577717002641838126363875249660735883565852672743849064846414228960666786379280392654615393353172850252103336275952370615397010730691664689375178569039851073146339641623266071126720011020169553304018596457812688561947201171488461172921822139066929851282122002676667750021070848.000000
+ 9999999999999999860310597602564577717002641838126363875249660735883565852672743849064846414228960666786379280392654615393353172850252103336275952370615397010730691664689375178569039851073146339641623266071126720011020169553304018596457812688561947201171488461172921822139066929851282122002676667750021070848.00000000000000000000
cat in.txt && ../../hoc1 < in.txt
4 / 2
-2 / 1
-2 / 2
-2 / 3
-10000 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
-3.141592 / 2.718281828
-1000 / 0.0001
-1.23e2 / 321
-1.2345678901e100 / 1.2345678901e99
+4 / 3
+4 / 1
+4 / 0
+1 / 10
+10 / 7
+30 / 7
+10 / 0.1
+1.23e2 / .01
/1
- 2
- 2
- 1
- 0.66666667
- 0.0027557319
- 1.1557271
- 10000000
- 0.38317757
- 10
+ 2.00000000000000000000
+ 1.33333333333333325932
+ 4.00000000000000000000
+ inf
+ 0.10000000000000000555
+ 1.42857142857142860315
+ 4.28571428571428558740
+ 100.00000000000000000000
+ 12300.00000000000000000000
../../hoc1: syntax error near line 10
4 / 2
-2 / 1
-2 / 2
-2 / 3
-10000 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
-3.141592 / 2.718281828
-1000 / 0.0001
-1.23e2 / 321
-1.2345678901e100 / 1.2345678901e99
+4 / 3
+4 / 1
+4 / 0
+1 / 10
+10 / 7
+30 / 7
+10 / 0.1
+1.23e2 / .01
/1
cat in.txt && ../../hoc1 < in.txt
-6 / 2
-2 / 1
-2 / 2
-2 / 3
-10000 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
-3.141592 / 2.718281828
-1000 / 0.0001
-1.23e2 / 321
-1.2345678901e100 / 1.2345678901e99
+4 / 2
+4 / 3
+4 / 1
+4 / 0
+1 / 10
+10 / 7
+30 / 7
+10 / 0.1
+1.23e2 / .01
/1
- 3
- 2
- 1
- 0.66666667
- 0.0027557319
- 1.1557271
- 10000000
- 0.38317757
- 10
+ 2.00000000000000000000
+ 1.33333333333333325932
+ 4.00000000000000000000
+ inf
+ 0.10000000000000000555
+ 1.42857142857142860315
+ 4.28571428571428558740
+ 100.00000000000000000000
+ 123.00000000000000000000
../../hoc1: syntax error near line 10
4 / 2
-2 / 1
-2 / 2
-2 / 3
-10000 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
-3.141592 / 2.718281828
-1000 / 0.0001
-1.23e2 / 321
-1.2345678901e100 / 1.2345678901e99
+4 / 3
+4 / 1
+4 / 0
+1 / 10
+10 / 7
+30 / 7
+10 / 0.1
+1.23e2 / .01
/1
--- /dev/null
+cat in.txt && ../../hoc1 < in.txt
+1.23e-100 + 5.43e-100
+ 6.66000000000000021436e-100
--- /dev/null
+cat in.txt && ../../hoc1 < in.txt
--- /dev/null
+1.23e-100 + 5.43e-100
1 + 2 * 3 + 4
(1 + 2) / (3 + 4)
1 + 2 / 3 + 4
- 21
- 11
- 0.42857143
- 5.6666667
+ 21.00000000000000000000
+ 11.00000000000000000000
+ 0.42857142857142854764
+ 5.66666666666666607455
1.23e3 * 6.02e23
*1
2 * 5
- 6
- 6
- 2
- 0
- 3628800
- 0.15241579
- 100000
- 7.4046e+26
+ 6.00000000000000000000
+ 6.00000000000000000000
+ 2.00000000000000000000
+ 0.00000000000000000000
+ 3628800.00000000000000000000
+ 0.15241578750190518110
+ 100000.00000000000000000000
+ 740460000000000062620958720.00000000000000000000
../../hoc1: syntax error near line 9
4 * (1/1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 + 1/17 - 1/19 + 1/21 - 1/23 + 1/25 - 1/27 + 1/29 - 1/31 + 1/33 - 1/35 + 1/37 - 1/39 + 1/41 - 1/43 + 1/45 - 1/47 + 1/49 - 1/51 + 1/53 - 1/55 + 1/57 - 1/59 + 1/61 - 1/63 + 1/65 - 1/67 + 1/69 - 1/71 + 1/73 - 1/75 + 1/77 - 1/79 + 1/81 - 1/83 + 1/85 - 1/87 + 1/89 - 1/91 + 1/93 - 1/95 + 1/97 - 1/99 + 1/101 - 1/103 + 1/105 - 1/107 + 1/109 - 1/111 + 1/113 - 1/115 + 1/117 - 1/119 + 1/121 - 1/123 + 1/125 - 1/127 + 1/129 - 1/131 + 1/133 - 1/135 + 1/137 - 1/139 + 1/141 - 1/143 + 1/145 - 1/147 + 1/149 - 1/151 + 1/153 - 1/155 + 1/157 - 1/159 + 1/161 - 1/163 + 1/165 - 1/167 + 1/169 - 1/171 + 1/173 - 1/175 + 1/177 - 1/179 + 1/181 - 1/183 + 1/185 - 1/187 + 1/189 - 1/191 + 1/193 - 1/195 + 1/197 - 1/199 + 1/201 - 1/203 + 1/205 - 1/207 + 1/209 - 1/211 + 1/213 - 1/215 + 1/217 - 1/219 + 1/221 - 1/223 + 1/225 - 1/227 + 1/229 - 1/231 + 1/233 - 1/235 + 1/237 - 1/239 + 1/241 - 1/243 + 1/245 - 1/247 + 1/249 - 1/251 + 1/253 - 1/255 + 1/257 - 1/259 + 1/261 - 1/263 + 1/265 - 1/267 + 1/269 - 1/271 + 1/273 - 1/275 + 1/277 - 1/279 + 1/281 - 1/283 + 1/285 - 1/287 + 1/289 - 1/291 + 1/293 - 1/295 + 1/297 - 1/299 + 1/301 - 1/303 + 1/305 - 1/307 + 1/309 - 1/311 + 1/313 - 1/315 + 1/317 - 1/319 + 1/321 - 1/323 + 1/325 - 1/327 + 1/329 - 1/331 + 1/333 - 1/335 + 1/337 - 1/339 + 1/341 - 1/343 + 1/345 - 1/347 + 1/349 - 1/351 + 1/353 - 1/355 + 1/357 - 1/359 + 1/361 - 1/363 + 1/365 - 1/367 + 1/369 - 1/371 + 1/373 - 1/375 + 1/377 - 1/379 + 1/381 - 1/383 + 1/385 - 1/387 + 1/389 - 1/391 + 1/393 - 1/395 + 1/397 - 1/399 + 1/401 - 1/403 + 1/405 - 1/407 + 1/409 - 1/411 + 1/413 - 1/415 + 1/417 - 1/419 + 1/421 - 1/423 + 1/425 - 1/427 + 1/429 - 1/431 + 1/433 - 1/435 + 1/437 - 1/439 + 1/441 - 1/443 + 1/445 - 1/447 + 1/449 - 1/451 + 1/453 - 1/455 + 1/457 - 1/459 + 1/461 - 1/463 + 1/465 - 1/467 + 1/469 - 1/471 + 1/473 - 1/475 + 1/477 - 1/479 + 1/481 - 1/483 + 1/485 - 1/487 + 1/489 - 1/491 + 1/493 - 1/495 + 1/497 - 1/499 + 1/501 - 1/503 + 1/505 - 1/507 + 1/509 - 1/511 + 1/513 - 1/515 + 1/517 - 1/519 + 1/521 - 1/523 + 1/525 - 1/527 + 1/529 - 1/531 + 1/533 - 1/535 + 1/537 - 1/539 + 1/541 - 1/543 + 1/545 - 1/547 + 1/549 - 1/551 + 1/553 - 1/555 + 1/557 - 1/559 + 1/561 - 1/563 + 1/565 - 1/567 + 1/569 - 1/571 + 1/573 - 1/575 + 1/577 - 1/579 + 1/581 - 1/583 + 1/585 - 1/587 + 1/589 - 1/591 + 1/593 - 1/595 + 1/597 - 1/599 + 1/601 - 1/603 + 1/605 - 1/607 + 1/609 - 1/611 + 1/613 - 1/615 + 1/617 - 1/619 + 1/621 - 1/623 + 1/625 - 1/627 + 1/629 - 1/631 + 1/633 - 1/635 + 1/637 - 1/639 + 1/641 - 1/643 + 1/645 - 1/647 + 1/649 - 1/651 + 1/653 - 1/655 + 1/657 - 1/659 + 1/661 - 1/663 + 1/665 - 1/667 + 1/669 - 1/671 + 1/673 - 1/675 + 1/677 - 1/679 + 1/681 - 1/683 + 1/685 - 1/687 + 1/689 - 1/691 + 1/693 - 1/695 + 1/697 - 1/699 + 1/701 - 1/703 + 1/705 - 1/707 + 1/709 - 1/711 + 1/713 - 1/715 + 1/717 - 1/719 + 1/721 - 1/723 + 1/725 - 1/727 + 1/729 - 1/731 + 1/733 - 1/735 + 1/737 - 1/739 + 1/741 - 1/743 + 1/745 - 1/747 + 1/749 - 1/751 + 1/753 - 1/755 + 1/757 - 1/759 + 1/761 - 1/763 + 1/765 - 1/767 + 1/769 - 1/771 + 1/773 - 1/775 + 1/777 - 1/779 + 1/781 - 1/783 + 1/785 - 1/787 + 1/789 - 1/791 + 1/793 - 1/795 + 1/797 - 1/799 + 1/801 - 1/803 + 1/805 - 1/807 + 1/809 - 1/811 + 1/813 - 1/815 + 1/817 - 1/819 + 1/821 - 1/823 + 1/825 - 1/827 + 1/829 - 1/831 + 1/833 - 1/835 + 1/837 - 1/839 + 1/841 - 1/843 + 1/845 - 1/847 + 1/849 - 1/851 + 1/853 - 1/855 + 1/857 - 1/859 + 1/861 - 1/863 + 1/865 - 1/867 + 1/869 - 1/871 + 1/873 - 1/875 + 1/877 - 1/879 + 1/881 - 1/883 + 1/885 - 1/887 + 1/889 - 1/891 + 1/893 - 1/895 + 1/897 - 1/899 + 1/901 - 1/903 + 1/905 - 1/907 + 1/909 - 1/911 + 1/913 - 1/915 + 1/917 - 1/919 + 1/921 - 1/923 + 1/925 - 1/927 + 1/929 - 1/931 + 1/933 - 1/935 + 1/937 - 1/939 + 1/941 - 1/943 + 1/945 - 1/947 + 1/949 - 1/951 + 1/953 - 1/955 + 1/957 - 1/959 + 1/961 - 1/963 + 1/965 - 1/967 + 1/969 - 1/971 + 1/973 - 1/975 + 1/977 - 1/979 + 1/981 - 1/983 + 1/985 - 1/987 + 1/989 - 1/991 + 1/993 - 1/995 + 1/997 - 1/999)
4 * (1/1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 + 1/17 - 1/19 + 1/21 - 1/23 + 1/25 - 1/27 + 1/29 - 1/31 + 1/33 - 1/35 + 1/37 - 1/39 + 1/41 - 1/43 + 1/45 - 1/47 + 1/49 - 1/51 + 1/53 - 1/55 + 1/57 - 1/59 + 1/61 - 1/63 + 1/65 - 1/67 + 1/69 - 1/71 + 1/73 - 1/75 + 1/77 - 1/79 + 1/81 - 1/83 + 1/85 - 1/87 + 1/89 - 1/91 + 1/93 - 1/95 + 1/97 - 1/99 + 1/101 - 1/103 + 1/105 - 1/107 + 1/109 - 1/111 + 1/113 - 1/115 + 1/117 - 1/119 + 1/121 - 1/123 + 1/125 - 1/127 + 1/129 - 1/131 + 1/133 - 1/135 + 1/137 - 1/139 + 1/141 - 1/143 + 1/145 - 1/147 + 1/149 - 1/151 + 1/153 - 1/155 + 1/157 - 1/159 + 1/161 - 1/163 + 1/165 - 1/167 + 1/169 - 1/171 + 1/173 - 1/175 + 1/177 - 1/179 + 1/181 - 1/183 + 1/185 - 1/187 + 1/189 - 1/191 + 1/193 - 1/195 + 1/197 - 1/199 + 1/201 - 1/203 + 1/205 - 1/207 + 1/209 - 1/211 + 1/213 - 1/215 + 1/217 - 1/219 + 1/221 - 1/223 + 1/225 - 1/227 + 1/229 - 1/231 + 1/233 - 1/235 + 1/237 - 1/239 + 1/241 - 1/243 + 1/245 - 1/247 + 1/249 - 1/251 + 1/253 - 1/255 + 1/257 - 1/259 + 1/261 - 1/263 + 1/265 - 1/267 + 1/269 - 1/271 + 1/273 - 1/275 + 1/277 - 1/279 + 1/281 - 1/283 + 1/285 - 1/287 + 1/289 - 1/291 + 1/293 - 1/295 + 1/297 - 1/299 + 1/301 - 1/303 + 1/305 - 1/307 + 1/309 - 1/311 + 1/313 - 1/315 + 1/317 - 1/319 + 1/321 - 1/323 + 1/325 - 1/327 + 1/329 - 1/331 + 1/333 - 1/335 + 1/337 - 1/339 + 1/341 - 1/343 + 1/345 - 1/347 + 1/349 - 1/351 + 1/353 - 1/355 + 1/357 - 1/359 + 1/361 - 1/363 + 1/365 - 1/367 + 1/369 - 1/371 + 1/373 - 1/375 + 1/377 - 1/379 + 1/381 - 1/383 + 1/385 - 1/387 + 1/389 - 1/391 + 1/393 - 1/395 + 1/397 - 1/399 + 1/401 - 1/403 + 1/405 - 1/407 + 1/409 - 1/411 + 1/413 - 1/415 + 1/417 - 1/419 + 1/421 - 1/423 + 1/425 - 1/427 + 1/429 - 1/431 + 1/433 - 1/435 + 1/437 - 1/439 + 1/441 - 1/443 + 1/445 - 1/447 + 1/449 - 1/451 + 1/453 - 1/455 + 1/457 - 1/459 + 1/461 - 1/463 + 1/465 - 1/467 + 1/469 - 1/471 + 1/473 - 1/475 + 1/477 - 1/479 + 1/481 - 1/483 + 1/485 - 1/487 + 1/489 - 1/491 + 1/493 - 1/495 + 1/497 - 1/499 + 1/501 - 1/503 + 1/505 - 1/507 + 1/509 - 1/511 + 1/513 - 1/515 + 1/517 - 1/519 + 1/521 - 1/523 + 1/525 - 1/527 + 1/529 - 1/531 + 1/533 - 1/535 + 1/537 - 1/539 + 1/541 - 1/543 + 1/545 - 1/547 + 1/549 - 1/551 + 1/553 - 1/555 + 1/557 - 1/559 + 1/561 - 1/563 + 1/565 - 1/567 + 1/569 - 1/571 + 1/573 - 1/575 + 1/577 - 1/579 + 1/581 - 1/583 + 1/585 - 1/587 + 1/589 - 1/591 + 1/593 - 1/595 + 1/597 - 1/599 + 1/601 - 1/603 + 1/605 - 1/607 + 1/609 - 1/611 + 1/613 - 1/615 + 1/617 - 1/619 + 1/621 - 1/623 + 1/625 - 1/627 + 1/629 - 1/631 + 1/633 - 1/635 + 1/637 - 1/639 + 1/641 - 1/643 + 1/645 - 1/647 + 1/649 - 1/651 + 1/653 - 1/655 + 1/657 - 1/659 + 1/661 - 1/663 + 1/665 - 1/667 + 1/669 - 1/671 + 1/673 - 1/675 + 1/677 - 1/679 + 1/681 - 1/683 + 1/685 - 1/687 + 1/689 - 1/691 + 1/693 - 1/695 + 1/697 - 1/699 + 1/701 - 1/703 + 1/705 - 1/707 + 1/709 - 1/711 + 1/713 - 1/715 + 1/717 - 1/719 + 1/721 - 1/723 + 1/725 - 1/727 + 1/729 - 1/731 + 1/733 - 1/735 + 1/737 - 1/739 + 1/741 - 1/743 + 1/745 - 1/747 + 1/749 - 1/751 + 1/753 - 1/755 + 1/757 - 1/759 + 1/761 - 1/763 + 1/765 - 1/767 + 1/769 - 1/771 + 1/773 - 1/775 + 1/777 - 1/779 + 1/781 - 1/783 + 1/785 - 1/787 + 1/789 - 1/791 + 1/793 - 1/795 + 1/797 - 1/799 + 1/801 - 1/803 + 1/805 - 1/807 + 1/809 - 1/811 + 1/813 - 1/815 + 1/817 - 1/819 + 1/821 - 1/823 + 1/825 - 1/827 + 1/829 - 1/831 + 1/833 - 1/835 + 1/837 - 1/839 + 1/841 - 1/843 + 1/845 - 1/847 + 1/849 - 1/851 + 1/853 - 1/855 + 1/857 - 1/859 + 1/861 - 1/863 + 1/865 - 1/867 + 1/869 - 1/871 + 1/873 - 1/875 + 1/877 - 1/879 + 1/881 - 1/883 + 1/885 - 1/887 + 1/889 - 1/891 + 1/893 - 1/895 + 1/897 - 1/899 + 1/901 - 1/903 + 1/905 - 1/907 + 1/909 - 1/911 + 1/913 - 1/915 + 1/917 - 1/919 + 1/921 - 1/923 + 1/925 - 1/927 + 1/929 - 1/931 + 1/933 - 1/935 + 1/937 - 1/939 + 1/941 - 1/943 + 1/945 - 1/947 + 1/949 - 1/951 + 1/953 - 1/955 + 1/957 - 1/959 + 1/961 - 1/963 + 1/965 - 1/967 + 1/969 - 1/971 + 1/973 - 1/975 + 1/977 - 1/979 + 1/981 - 1/983 + 1/985 - 1/987 + 1/989 - 1/991 + 1/993 - 1/995 + 1/997 - 1/999 + 1/1001)
- 3.339683
- 3.041840
- 3.189185
- 3.163812
- 3.119856
- 3.162867
- 3.120762
- 3.161999
- 3.121595
- 3.139593
- 3.143589
+ 3.33968253968254025210
+ 3.04183961892940324390
+ 3.18918478227759605304
+ 3.16381213401875616142
+ 3.11985609006271236154
+ 3.16286684275088436635
+ 3.12076157959298949862
+ 3.16199869299505120779
+ 3.12159465259101098766
+ 3.13959265558978506405
+ 3.14358865958578892474
-div - pi 公式 pi/4 = 1 + 1/3 + 1/5 ... を実行
+hoc1 - pi 公式 pi/4 = 1 + 1/3 + 1/5 ... を実行
100 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 -10
3.141592 - 2.718281828
1000-0.0001
-1.23e2 - 321
-1.2345678901e100 - 1.2345678901e99
+1.23e2 - .1
-1
- 1
- 0
- -1
- 45
- 0.42331017
- 999.9999
- -198
- 1.1111111e+100
- -1
+ 1.00000000000000000000
+ 0.00000000000000000000
+ -1.00000000000000000000
+ 45.00000000000000000000
+ 0.42331017200000031764
+ 999.99990000000002510205
+ 122.90000000000000568434
+ -1.00000000000000000000
100 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 -10
3.141592 - 2.718281828
1000-0.0001
-1.23e2 - 321
-1.2345678901e100 - 1.2345678901e99
+1.23e2 - .1
-1
+++ /dev/null
-include ../Define.mk
-include ../Test.mk