テストを更新。hoc1で、通常の数値は小数点20桁、1e-15未満の小数は科学表記で出力するよう仕様修正
authorj8takagi <j8takagi@nifty.com>
Tue, 23 Nov 2010 15:22:13 +0000 (00:22 +0900)
committerj8takagi <j8takagi@nifty.com>
Tue, 23 Nov 2010 15:22:13 +0000 (00:22 +0900)
24 files changed:
sample/hoc1/Makefile
sample/hoc1/hoc.y
sample/hoc1/test/.gitignore [new file with mode: 0644]
sample/hoc1/test/Define.mk
sample/hoc1/test/Makefile
sample/hoc1/test/Test.mk
sample/hoc1/test/add/0.txt
sample/hoc1/test/add/in.txt
sample/hoc1/test/bignum/0.txt
sample/hoc1/test/div/0.txt
sample/hoc1/test/div/in.txt
sample/hoc1/test/div_1/0.txt
sample/hoc1/test/div_1/in.txt
sample/hoc1/test/minnum/0.txt [new file with mode: 0644]
sample/hoc1/test/minnum/Makefile [moved from sample/hoc1/test/add2/Makefile with 100% similarity]
sample/hoc1/test/minnum/cmd [new file with mode: 0755]
sample/hoc1/test/minnum/in.txt [new file with mode: 0644]
sample/hoc1/test/mix/0.txt
sample/hoc1/test/mul/0.txt
sample/hoc1/test/pi/0.txt
sample/hoc1/test/pi/desc.txt
sample/hoc1/test/sub/0.txt
sample/hoc1/test/sub/in.txt
sample/hoc1/test/test/Makefile [deleted file]

index f10080e..ac84799 100644 (file)
@@ -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
+
index 98270a8..efabe25 100644 (file)
@@ -5,15 +5,15 @@
 #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; }
@@ -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 (file)
index 0000000..fbf3ca7
--- /dev/null
@@ -0,0 +1,4 @@
+1.txt
+*.log
+diff.txt
+err.txt
index 71b6726..97be24c 100644 (file)
+# 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
index 31cb794..bdae65f 100644 (file)
@@ -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 $@)
index 398318f..10fe274 100644 (file)
@@ -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),$^,$@)
index 65ca41c..97d46c7 100644 (file)
@@ -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
index e346f76..5a9357e 100644 (file)
@@ -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
index e168ad3..ee8d620 100644 (file)
@@ -1,4 +1,4 @@
 cat in.txt && ../../hoc1 < in.txt
 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 1
 
-       9999999999999999860310597602564577717002641838126363875249660735883565852672743849064846414228960666786379280392654615393353172850252103336275952370615397010730691664689375178569039851073146339641623266071126720011020169553304018596457812688561947201171488461172921822139066929851282122002676667750021070848.000000
+       9999999999999999860310597602564577717002641838126363875249660735883565852672743849064846414228960666786379280392654615393353172850252103336275952370615397010730691664689375178569039851073146339641623266071126720011020169553304018596457812688561947201171488461172921822139066929851282122002676667750021070848.00000000000000000000
index 509339e..9df9d7b 100644 (file)
@@ -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
index 925e864..8c2fbc3 100644 (file)
@@ -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
index 1a7d017..f1ac9a7 100644 (file)
@@ -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
index 925e864..8c2fbc3 100644 (file)
@@ -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 (file)
index 0000000..a75580c
--- /dev/null
@@ -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/minnum/cmd b/sample/hoc1/test/minnum/cmd
new file mode 100755 (executable)
index 0000000..ea36034
--- /dev/null
@@ -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 (file)
index 0000000..2c30a3a
--- /dev/null
@@ -0,0 +1 @@
+1.23e-100 + 5.43e-100
index 9584773..d875aa6 100644 (file)
@@ -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
index 60ab330..fa8bffc 100644 (file)
@@ -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
index 3aa600e..ed4cdde 100644 (file)
@@ -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
index 8546613..94f959d 100644 (file)
@@ -1 +1 @@
-div - pi 公式 pi/4 = 1 + 1/3 + 1/5 ... を実行
+hoc1 - pi 公式 pi/4 = 1 + 1/3 + 1/5 ... を実行
index 5347bd9..710b0de 100644 (file)
@@ -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
index 656e57f..26f19b6 100644 (file)
@@ -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 (file)
index b6dac59..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-include ../Define.mk
-include ../Test.mk