Here's the 1N4148 model used by LTspice:
.model 1N4148 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)
A diode model is really this:

simulate this circuit – Schematic created using CircuitLab
Here's an LTspice schematic and results from a DC operating point run:

Here's me plugging in those values into some code I wrote that uses the series resistance and the Shockley diode model:
This program uses 3 diode measurements to extract parameters.
You will need to have taken these measurements beforehand.
Enter each point as [ <diode current>, <diode voltage> ].
Enter the ambient temperature in Celsius (default is 27 C):
Enter point 0: .00001 .375505
Enter point 1: .001 .58474
Enter point 2: .1 .849657
RS = 0.568125701459042
N = 1.75189696816123
ISAT = 2.51806283647115e-9
Compare above with the model LTspice used: Is=2.52n Rs=.568 N=1.752
Reduce the precision to just three digits for voltage:
This program uses 3 diode measurements to extract parameters.
You will need to have taken these measurements beforehand.
Enter each point as [ <diode current>, <diode voltage> ].
Enter the ambient temperature in Celsius (default is 27 C):
Enter point 0: .00001 .376
Enter point 1: .001 .585
Enter point 2: .1 .850
RS = 0.571370268339972
N = 1.74989707367668
ISAT = 2.46719846363323e-9
Compare again. Not bad.
Reduce the precision to just two digits for voltage:
This program uses 3 diode measurements to extract parameters.
You will need to have taken these measurements beforehand.
Enter each point as [ <diode current>, <diode voltage> ].
Enter the ambient temperature in Celsius (default is 27 C):
Enter point 0: .00001 .38
Enter point 1: .001 .59
Enter point 2: .1 .85
RS = 0.510152025303548
N = 1.75880132338524
ISAT = 2.35654795855193e-9
Still not all that terrible.
I'm not having any trouble with the above diode model or with matching LTspice results.