#include <cmath>
#include <stdio.h>
#include <iostream>

class My3Vector { 
  public: 
  My3Vector(); 
  My3Vector(double x, double y, double z); 
  My3Vector(const My3Vector &v); 
  inline double x(); 
  inline double y(); 
  inline double z(); 
  inline double Phi(); 
  inline double cosTheta(); 
  inline double mag();
 
  private: 
  double r, cos_theta, phi; 
};

My3Vector::My3Vector(){
}

My3Vector::My3Vector(double x, double y, double z){
  r=sqrt(x*x+y*y+z*z);
  phi = (x == 0.0 && y == 0.0) ? 0.0 : atan2(y,x); 
  cos_theta = (r==0.0) ? 1.0 : z/r;
}

My3Vector::My3Vector(const My3Vector &vec){
  r=vec.r;
  phi = vec.phi;
  cos_theta = vec.cos_theta;
}

inline double My3Vector::x(){
  return r*std::cos(phi)*cos_theta;
}

inline double My3Vector::y(){
  return r*std::sin(phi)*cos_theta;
}

inline double My3Vector::z(){
  return r*cos_theta;
}

inline double My3Vector::mag(){
  return r;
}

inline double My3Vector::Phi(){
  return phi;
}

inline double My3Vector::cosTheta(){
  return cos_theta;
}

int main(){
  double i=1;
  double j=2;
  double k=3;
  My3Vector a(i,j,k);
  std::cout<< "Phi:"<< a.Phi() << "\n";
  std::cout<< "R  :"<< a.mag() << "\n";
  return 0;
}
