From 21e3580972aef515af7b9740bdba08992a084e00 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Wed, 24 Nov 2010 00:22:13 +0900 Subject: [PATCH] =?utf8?q?=E3=83=86=E3=82=B9=E3=83=88=E3=82=92=E6=9B=B4?= =?utf8?q?=E6=96=B0=E3=80=82hoc1=E3=81=A7=E3=80=81=E9=80=9A=E5=B8=B8?= =?utf8?q?=E3=81=AE=E6=95=B0=E5=80=A4=E3=81=AF=E5=B0=8F=E6=95=B0=E7=82=B92?= =?utf8?q?0=E6=A1=81=E3=80=811e-15=E6=9C=AA=E6=BA=80=E3=81=AE=E5=B0=8F?= =?utf8?q?=E6=95=B0=E3=81=AF=E7=A7=91=E5=AD=A6=E8=A1=A8=E8=A8=98=E3=81=A7?= =?utf8?q?=E5=87=BA=E5=8A=9B=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E4=BB=95?= =?utf8?q?=E6=A7=98=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- sample/hoc1/Makefile | 13 +- sample/hoc1/hoc.y | 21 ++- sample/hoc1/test/.gitignore | 4 + sample/hoc1/test/Define.mk | 181 +++++++++++++-------- sample/hoc1/test/Makefile | 94 ++++++----- sample/hoc1/test/Test.mk | 21 ++- sample/hoc1/test/add/0.txt | 22 +-- sample/hoc1/test/add/in.txt | 9 +- sample/hoc1/test/bignum/0.txt | 2 +- sample/hoc1/test/div/0.txt | 34 ++-- sample/hoc1/test/div/in.txt | 16 +- sample/hoc1/test/div_1/0.txt | 36 ++-- sample/hoc1/test/div_1/in.txt | 16 +- sample/hoc1/test/minnum/0.txt | 3 + sample/hoc1/test/{add2 => minnum}/Makefile | 0 sample/hoc1/test/minnum/cmd | 1 + sample/hoc1/test/minnum/in.txt | 1 + sample/hoc1/test/mix/0.txt | 8 +- sample/hoc1/test/mul/0.txt | 16 +- sample/hoc1/test/pi/0.txt | 22 +-- sample/hoc1/test/pi/desc.txt | 2 +- sample/hoc1/test/sub/0.txt | 20 +-- sample/hoc1/test/sub/in.txt | 3 +- sample/hoc1/test/test/Makefile | 2 - 24 files changed, 320 insertions(+), 227 deletions(-) create mode 100644 sample/hoc1/test/.gitignore create mode 100644 sample/hoc1/test/minnum/0.txt rename sample/hoc1/test/{add2 => minnum}/Makefile (100%) create mode 100755 sample/hoc1/test/minnum/cmd create mode 100644 sample/hoc1/test/minnum/in.txt delete mode 100644 sample/hoc1/test/test/Makefile diff --git a/sample/hoc1/Makefile b/sample/hoc1/Makefile index f10080e..ac84799 100644 --- a/sample/hoc1/Makefile +++ b/sample/hoc1/Makefile @@ -1,10 +1,15 @@ 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 + diff --git a/sample/hoc1/hoc.y b/sample/hoc1/hoc.y index 98270a8..efabe25 100644 --- a/sample/hoc1/hoc.y +++ b/sample/hoc1/hoc.y @@ -5,15 +5,15 @@ #include %} -%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; } @@ -36,6 +36,14 @@ int main(int argc, char *argv[]) { 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') { @@ -50,8 +58,11 @@ int yylex(){ scanf("%lf", &yylval); return NUMBER; } - if(c == '\n') { - lineno++; + if(c == '\n' || c == ';') { + if(c == '\n') { + lineno++; + } + return EOL; } return c; } diff --git a/sample/hoc1/test/.gitignore b/sample/hoc1/test/.gitignore new file mode 100644 index 0000000..fbf3ca7 --- /dev/null +++ b/sample/hoc1/test/.gitignore @@ -0,0 +1,4 @@ +1.txt +*.log +diff.txt +err.txt diff --git a/sample/hoc1/test/Define.mk b/sample/hoc1/test/Define.mk index 71b6726..97be24c 100644 --- a/sample/hoc1/test/Define.mk +++ b/sample/hoc1/test/Define.mk @@ -1,87 +1,145 @@ +# 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 # テスト実行コマンド。引数は、コマンドファイル、出力ファイル、エラーファイル @@ -89,57 +147,46 @@ 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 diff --git a/sample/hoc1/test/Makefile b/sample/hoc1/test/Makefile index 31cb794..bdae65f 100644 --- a/sample/hoc1/test/Makefile +++ b/sample/hoc1/test/Makefile @@ -1,5 +1,17 @@ # 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 ###################################################################### # テストグループの定義 @@ -14,7 +26,16 @@ GROUP_DIR := $(shell pwd) 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) @@ -25,57 +46,48 @@ FAIL_TEST = $(shell grep "^[^A-Z.].*: Test Failure" $(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 $@) diff --git a/sample/hoc1/test/Test.mk b/sample/hoc1/test/Test.mk index 398318f..10fe274 100644 --- a/sample/hoc1/test/Test.mk +++ b/sample/hoc1/test/Test.mk @@ -13,6 +13,8 @@ # make clean : "make" で作成されたファイルをクリア # make cleanall: "make" と "make set" で作成されたファイルをクリア +SHELL = /bin/sh + # テスト名。カレントディレクトリー名から取得 TEST = $(notdir $(shell pwd)) @@ -20,9 +22,14 @@ 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) @@ -35,16 +42,20 @@ clean: 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),$^,$@) diff --git a/sample/hoc1/test/add/0.txt b/sample/hoc1/test/add/0.txt index 65ca41c..97d46c7 100644 --- a/sample/hoc1/test/add/0.txt +++ b/sample/hoc1/test/add/0.txt @@ -1,13 +1,15 @@ 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 diff --git a/sample/hoc1/test/add/in.txt b/sample/hoc1/test/add/in.txt index e346f76..5a9357e 100644 --- a/sample/hoc1/test/add/in.txt +++ b/sample/hoc1/test/add/in.txt @@ -1,6 +1,7 @@ +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 diff --git a/sample/hoc1/test/bignum/0.txt b/sample/hoc1/test/bignum/0.txt index e168ad3..ee8d620 100644 --- a/sample/hoc1/test/bignum/0.txt +++ b/sample/hoc1/test/bignum/0.txt @@ -1,4 +1,4 @@ cat in.txt && ../../hoc1 < in.txt 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 1 - 9999999999999999860310597602564577717002641838126363875249660735883565852672743849064846414228960666786379280392654615393353172850252103336275952370615397010730691664689375178569039851073146339641623266071126720011020169553304018596457812688561947201171488461172921822139066929851282122002676667750021070848.000000 + 9999999999999999860310597602564577717002641838126363875249660735883565852672743849064846414228960666786379280392654615393353172850252103336275952370615397010730691664689375178569039851073146339641623266071126720011020169553304018596457812688561947201171488461172921822139066929851282122002676667750021070848.00000000000000000000 diff --git a/sample/hoc1/test/div/0.txt b/sample/hoc1/test/div/0.txt index 509339e..9df9d7b 100644 --- a/sample/hoc1/test/div/0.txt +++ b/sample/hoc1/test/div/0.txt @@ -1,21 +1,21 @@ 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 diff --git a/sample/hoc1/test/div/in.txt b/sample/hoc1/test/div/in.txt index 925e864..8c2fbc3 100644 --- a/sample/hoc1/test/div/in.txt +++ b/sample/hoc1/test/div/in.txt @@ -1,10 +1,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 diff --git a/sample/hoc1/test/div_1/0.txt b/sample/hoc1/test/div_1/0.txt index 1a7d017..f1ac9a7 100644 --- a/sample/hoc1/test/div_1/0.txt +++ b/sample/hoc1/test/div_1/0.txt @@ -1,21 +1,21 @@ 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 diff --git a/sample/hoc1/test/div_1/in.txt b/sample/hoc1/test/div_1/in.txt index 925e864..8c2fbc3 100644 --- a/sample/hoc1/test/div_1/in.txt +++ b/sample/hoc1/test/div_1/in.txt @@ -1,10 +1,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 diff --git a/sample/hoc1/test/minnum/0.txt b/sample/hoc1/test/minnum/0.txt new file mode 100644 index 0000000..a75580c --- /dev/null +++ b/sample/hoc1/test/minnum/0.txt @@ -0,0 +1,3 @@ +cat in.txt && ../../hoc1 < in.txt +1.23e-100 + 5.43e-100 + 6.66000000000000021436e-100 diff --git a/sample/hoc1/test/add2/Makefile b/sample/hoc1/test/minnum/Makefile similarity index 100% rename from sample/hoc1/test/add2/Makefile rename to sample/hoc1/test/minnum/Makefile diff --git a/sample/hoc1/test/minnum/cmd b/sample/hoc1/test/minnum/cmd new file mode 100755 index 0000000..ea36034 --- /dev/null +++ b/sample/hoc1/test/minnum/cmd @@ -0,0 +1 @@ +cat in.txt && ../../hoc1 < in.txt diff --git a/sample/hoc1/test/minnum/in.txt b/sample/hoc1/test/minnum/in.txt new file mode 100644 index 0000000..2c30a3a --- /dev/null +++ b/sample/hoc1/test/minnum/in.txt @@ -0,0 +1 @@ +1.23e-100 + 5.43e-100 diff --git a/sample/hoc1/test/mix/0.txt b/sample/hoc1/test/mix/0.txt index 9584773..d875aa6 100644 --- a/sample/hoc1/test/mix/0.txt +++ b/sample/hoc1/test/mix/0.txt @@ -3,7 +3,7 @@ cat in.txt && ../../hoc1 < in.txt 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 diff --git a/sample/hoc1/test/mul/0.txt b/sample/hoc1/test/mul/0.txt index 60ab330..fa8bffc 100644 --- a/sample/hoc1/test/mul/0.txt +++ b/sample/hoc1/test/mul/0.txt @@ -9,12 +9,12 @@ cat in.txt && ../../hoc1 < in.txt 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 diff --git a/sample/hoc1/test/pi/0.txt b/sample/hoc1/test/pi/0.txt index 3aa600e..ed4cdde 100644 --- a/sample/hoc1/test/pi/0.txt +++ b/sample/hoc1/test/pi/0.txt @@ -11,14 +11,14 @@ cat in.txt && ../../hoc1 < in.txt 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 diff --git a/sample/hoc1/test/pi/desc.txt b/sample/hoc1/test/pi/desc.txt index 8546613..94f959d 100644 --- a/sample/hoc1/test/pi/desc.txt +++ b/sample/hoc1/test/pi/desc.txt @@ -1 +1 @@ -div - pi 公式 pi/4 = 1 + 1/3 + 1/5 ... を実行 +hoc1 - pi 公式 pi/4 = 1 + 1/3 + 1/5 ... を実行 diff --git a/sample/hoc1/test/sub/0.txt b/sample/hoc1/test/sub/0.txt index 5347bd9..710b0de 100644 --- a/sample/hoc1/test/sub/0.txt +++ b/sample/hoc1/test/sub/0.txt @@ -5,15 +5,13 @@ cat in.txt && ../../hoc1 < in.txt 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 diff --git a/sample/hoc1/test/sub/in.txt b/sample/hoc1/test/sub/in.txt index 656e57f..26f19b6 100644 --- a/sample/hoc1/test/sub/in.txt +++ b/sample/hoc1/test/sub/in.txt @@ -4,6 +4,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 diff --git a/sample/hoc1/test/test/Makefile b/sample/hoc1/test/test/Makefile deleted file mode 100644 index b6dac59..0000000 --- a/sample/hoc1/test/test/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -include ../Define.mk -include ../Test.mk -- 2.18.0