You could use 1 instead of 100 for the "norm" and get even more reasonable results.
Are the data in the file "raw values.txt" truly the numbers that come directly from the sensor, without any modifications?
If so, the next step is to put the offsets and "correction for combined scale factors ..." into your program, similar to what I did for the examples posted on the Pololu forum.
// Code initialization statements from magneto
float B[3] = { 9955.15, -7948.26, 8511.80};
float Ainv[3][3] = {{ 0.25060, 0.02942, -0.02955},
{ 0.02942, 0.31692, 0.00789},
{ -0.02955, 0.00789, 0.30592}
...
// Returns a set of scaled magnetic readings from the LIS3MDL
void read_data(vector * m)
{
static float x, y, z;
compass.read();
x = compass.m.x - B[0];
y = compass.m.y - B[1];
z = compass.m.z - B[2];
m->x = Ainv[0][0] * x + Ainv[0][1] * y + Ainv[0][2] * z;
m->y = Ainv[1][0] * x + Ainv[1][1] * y + Ainv[1][2] * z;
m->z = Ainv[2][0] * x + Ainv[2][1] * y + Ainv[2][2] * z;
}
};