I am using Wolfram Mathematica 11. Given these quantities:

    v = 3; 
    Y = Sqrt[v^2 - X^2];

    Ja = BesselJ[0, X]; 
    Jap = -BesselJ[1, X];

    Ka = BesselK[0, Y]; 
    Kap = -BesselK[1, Y];

    side1 = Jap / (X*Ja); 
    side2 = -Kap / (Y*Ka);

I would like to obtain the same visual output as:

    Plot[{side1, side2}, {X, 0, 10}]

but on a `.txt` file, simply containing a table of values in this notation:

     0.0000000000e+00 -inf -inf
     3.0060120240e-02 -2.3042094212e+00 -2.1217639107e+01
     6.0120240481e-02 -1.8613440179e+00 -1.0654661322e+01

First column should list the `X` values; second column should list the corresponding `side1` values; third column the corresponding `side2` values.

How is it possible, with and without adaptive sampling?

**Important note**: I am not obliged to use `Plot`. I would like to obtain a `.txt` output file with the lines in the same format as above. The way it is created (through `Plot` or *any* other suitable function) is not important.


----------

**Edit**: I obtained two separate tables (in the desired format) this way:

    pts1 = Cases[Plot[side1[X], {X, 0, 10}, PlotRange -> {-1.6, 1.6}], Line[data_] :> data, All]~Flatten~1; Export["file1.txt",pts1,"Table"]
    
    pts2 = Cases[Plot[side2[X], {X, 0, 10}, PlotRange -> {-1.6, 1.6}], Line[data_] :> data, All]~Flatten~1; Export["file2.txt",pts2,"Table"]

Thanks to @MarcoB for his suggestions in the comments. Each file has only two columns. Note that `file1.txt` spans from `X = 0` to `X = 10`, while `file2.txt` from `X = 0` to `X = 1.778`, for the reasons pointed out by @m_golberg.

I was looking for a single table. This solution instead would demand to the external reader, which uses the table, the task to correctly overlap the two tables. This was **not** my initial intention, but if this is the only way, it is acceptable as well.