/* CHANGELOG by M.Banbara
  - print_times/4 --> print_times/5
  - report_csv/2 is added.
*/

/* envir(N): 3 arguments environment creation */
/*         creates 79 environments and 158 calls     */
/* suggested value for N: 1000 (interp), 1000 (comp) */
/* results for Cprolog: N=1000           */
/* Tloop=38.6 Tcomp=0.97 Tnet=37.6 Klips=4.23 */

envir(N):-statistics(runtime,[T1|_]),
        cre_env(N), statistics(runtime,[T2|_]),
        compens_loop(N), statistics(runtime,[T3|_]),
        print_times(envir(N),T1,T2,T3,N,159).

cre_env(0).
cre_env(N):-M is N-1, env0(X,Y,Z), cre_env(M).

compens_loop(0).
compens_loop(N):-M is N-1,compens_loop(M).

env0(X,Y,Z):-env1(Z,X,Y),env2(Y,Z,X). /* creates 79 environments */
env1(X,Y,Z):-env3(Z,Y,X),env4(Y,Z,X).
env2(X,Y,Z):-env3(Z,Y,X),env4(Y,Z,X).  /* and 158 calls */
env3(X,Y,Z):-env5(Z,Y,X),env6(Y,Z,X).
env4(X,Y,Z):-env5(Z,Y,X),env6(Y,Z,X).
env5(X,Y,Z):-env7(Z,Y,X),env8(Y,Z,X).
env6(X,Y,Z):-env7(Z,Y,X),env8(Y,Z,X).
env7(X,Y,Z):-env9(Z,Y,X),env10(Y,Z,X).
env8(X,Y,Z):-env9(Z,Y,X),env10(Y,Z,X).
env9(X,Y,Z):-env11(Z,Y,X),env12(Y,Z,X).
env10(X,Y,Z):-env12(Z,Y,X),env12(Y,Z,X).
env11(X,Y,Z):-env12(Z,Y,X),env12(Y,Z,X).
env12(X,Y,Z).


/* envir0ar(N): zero argument environment creation */
/*       creates 79 environments and 158 calls     */
/* suggested value for N: 1000 (interp), 1000 (comp) */
/* results for Cprolog: N=1000           */
/* Tloop=18.88 Tcomp=1.01 Tnet=17.87 Klips=8.9 */

envir0ar(N):-statistics(runtime,[T1|_]),
        cre_env0ar(N), statistics(runtime,[T2|_]),
        compens_loop(N), statistics(runtime,[T3|_]),
        print_times(envir0ar(N),T1,T2,T3,N,159).

cre_env0ar(0).
cre_env0ar(N):-M is N-1, env0, cre_env(M).


env0:-env1,env2. /* creates 79 environments */
env1:-env3,env4.
env2:-env3,env4.  /* and 158 calls */
env3:-env5,env6.
env4:-env5,env6.
env5:-env7,env8.
env6:-env7,env8.
env7:-env9,env10.
env8:-env9,env10.
env9:-env11,env12.
env10:-env12,env12.
env11:-env12,env12.
env12.

print_times(Name,T1,T2,T3,X,I) :-        /* prints the results */
        TT1 is T2 - T1,
        TT2 is T3 - T2,
        TT is TT1 - TT2,
        write('# Name:             '),write(Name), nl,
        write('# T overall loop:   '),write(TT1), write(' msec.'),nl,
        write('# T compens loop:   '),write(TT2), write(' msec.'),nl,
        write('# T net:            '),write(TT),write(' msec.'),nl,
        write('# KLips:            '),
        Li is I * X,
        Lips is Li / TT,
        KLips is Lips / 1000,
        write(KLips),nl,
	report_csv(['###CSV###',Name,TT1,TT2,TT,KLips], ','),
	nl.

report_csv([], _) :- !.
report_csv([X], _) :- !, write(X), nl.
report_csv([X|Xs], Delim) :- write(X), write(Delim), report_csv(Xs, Delim).
