Vectors and spherical coordinates pseudo code

Konventionen:

array[n] = Array[0-(n-1)];
vectorarray = float[3];

code:

private static testVec(float[] test)
{
  if (test.length != 3)
    {
      print("error in vectormath: array in wrong format");
      exit(-1);
    }
}
public static void vecAdd(float[] base, float[] added)
{
  testVec(base);
  testVec(added);
  loop(3)
    {
      base[i] += added[i];
    }
}
public static void vecSub(float[] base, float[] substracted)
{
  testVec(base);
  testVec(substracted);
  loop(3)
    {
       base[i] -= substracted[i];
    }
}
public static void scalarMult(float a, float[] b)
{
  testVec(b);
  loop(3)
    {
      b[i] *= a;
    }
}
public static float dotProduct(float[]a, float[] b)
{
  float out = 0;

  testVec(a);
  testVec(b);
  loop(3)
    {
      out += a[i]*b[i];
    }
  out = sqrt(out);
  return out;
}
public static float[3] crossProduct(float[] a, float[] b)
{
  float[3] out;
  testVec(a):
  testVec(b);
  loop(3)
    {
      out[i] = a[(i+1)%3]*b[(i+2)%3] - b[(i+1)%3]*a[(i+2)%3];
    }
  return out;
}
public static float[] transformCartToSphere(float[] a)
{
  float[3] out;
  testVec(a);

  out[0] = dotProduct(a, a);
  out[1] = arccos(a[2]/out[0]);

  if (a[0] == 0) out[2] = sgn(y)*(MATH.pi/2);
  else if(a[0] > 0) out[2] = arctan(a[1]/a[0]);
  else
    {
      if (a[1] >= 0) out[2]= arctan(a[1]/a[0]) + MATH.pi;
      if (a[1] < 0) out[2]= arctan(a[1]/a[0]) - MATH.pi;
    }
  return out;
}
public static float[] transformSphereToCart(float[] a)
{
  float[3] out;
  testVec(a);

  out[0] = a[0]*sin(a[1])*cos(a[2]);
  out[1] = a[0]*sin(a[1])*sin(a[2]);
  out[2] = a[0]*cos(a[1]);

  return out;
}