#!/usr/bin/env gnuplot -c
# == DEFINICIONS ==
outputfile = ARG2 # Nom de la imatge resultant (sense extensió)
datafile = ARG1 # Nom del fitxer de dades que es vol usar
error_sist_b = 2 # Error sistemàtic en

# == CONFIGURACIÓ DE L'OUTPUT PEL LATEX ==
set terminal cairolatex size 10cm, 7cm
set output outputfile.'.tex'

# == CONFIGURACIÓ DEL PLOT ==
set xlabel "$h_1 \\, (\\si{\\milli\\meter})$"
set ylabel "$h_2 \\, (\\si{\\milli\\meter})$"

# Opcions per la llegenda:
set key above
set key spacing 1.5

# == CONFIGURACIÓ DEL FIT ==
set fit quiet

f(x) = a*x + b # Funció a fitar
fit f(x) datafile u 1:2 via a, b # Fem el fit de les dades

# Això s'usa per obtenir el valor del coeficient de correlació "r", que estarà
# guardat a la var. "STATS_correlation"
stats datafile u 1:2 name "STATS" nooutput

# Funció per obtenir els dígits significatius d'una expressió
f_sd(n, i) = (int(n) == 0 ? f_sd(n*10, i+1) : (int(n) == 1 ? i+1 : i))
significant_digits(n) = f_sd(n - 10*int(n/10), 0)

significant_digits_r(n) = (n == 1 ? 0 : significant_digits(1 - n))

error_a = STATS_slope_err
sd_error_a = significant_digits(error_a)
error_b = sqrt(STATS_slope_err + error_sist_b)
sd_error_b = significant_digits(error_b)
r = STATS_correlation
sd_r = significant_digits_r(r)

print("=== ".datafile." ===")
print(sprintf('delta(a) = %.'.sd_error_a.'f, sd=%.0f', error_a, sd_error_a))
print(sprintf('delta(b) = %.'.sd_error_b.'f, sd=%.0f', error_b, sd_error_b))

# Aquesta funció escriu, a partir dels valors del paràmetres a, b i r,
# l'equació de la regressió:
title_f(a, b, r) = sprintf('$h_2(h_1) = %.'.sd_error_a.'f h_1 + (%.'.sd_error_b.'f)$, $r = %.'.sd_r.'f$', a, b, r);

plot datafile u 1:2:(2):(2) t "Dades experimentals" w xyerr, f(x) t title_f(a, b, r)

# == CONFIGURACIÓ DE L'OUTPUT PER SVG ==
# Això ho uso per generar també una imatge de previsualització que puc carregar
# a l'ordinador per veure més o menys com a sortit el plot sense haver
# d'inserir-ho al LaTeX per veure-ho.
set terminal svg dashed size 600, 600 font "Computer Modern,Tinos,Helvetica,15"
set output outputfile.'.svg'

replot
