#!/usr/bin/env gnuplot -c
outputfile="../output/graph2"
datafolder="../data/"

t_error=0.1#ºC
p_error=0.5#e5 Pa
error_sist_b=0.005

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

# == CONFIGURACIÓ DEL PLOT ==
set xlabel '$\frac{1}{T} \, (\si{\per\kelvin})$'
set ylabel '$\log(P \, \si{\per\pascal})'

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

# == FIT ==
set fit quiet

# 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 - abs(n)))

f(x) = a*x + b
fit f(x) datafolder.'data_fit.dat' u (1/(column(1) + 273.15)):(log(column(2)*1e5)) via a, b
stats datafolder.'data_fit.dat' u (1/(column(1) + 273.15)):(log(column(2)*1e5)) name "STATS" nooutput
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)
title_f(a, b, r) = sprintf('$f(T) = %.'.sd_error_a.'f \frac{1}{T} + %.'.sd_error_b.'f$, $r = %.'.sd_r.'f$', a, b, r);

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))
print(sprintf('r = %.'.sd_r.'f, sd=%.0f', r, sd_r))
print(sprintf('r (extended version) = %.6f, sd=%.0f', r, sd_r))

plot datafolder."data.dat" u (1/(column(1) + 273.15)):(log(column(2)*1e5)):(t_error/((column(1) + 273.15)**2)):(p_error/(column(2)*1e5)) w xyerr t "Dades experimentals", \
     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
