繰り返し処理の各処理におけるパフォーマンスを配列に入れて、その中央値を求めるプログラムを書いています。繰り返し処理は、行列の足し算で各要素を足す処理を指しています。

前回までの質問に続いて、こちらの質問をします。

解決したいこと
中央値を求める部分で関数呼び出し後の型に関するエラーを解決したい

コンパイルエラー(errorのみ抜粋、warningは除く)
下二つのエラーは1つ目のエラーに起因すると考えています。
1つ目は型に関してのエラーであることは推測できるのですが、中央値を求めるmedian()関数を呼び出す前の型doubleと合わせて、どのようにコードを修正すればいいかわかりません。

$ g++ -o sample_med sample_median.cpp
sample_median.cpp:25:14: error: invalid operands to binary expression
      ('double' and 'int')
    if (size % 2 == 1) {
        ~~~~ ^ ~

sample_median.cpp:83:5: error: use of undeclared identifier 'ans'
    ans = median(timedata);
    ^
sample_median.cpp:84:18: error: use of undeclared identifier 'ans'; did you mean
      'abs'?
    std::cout << ans << std::endl;
                 ^~~
                 abs
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/stdlib.h:113:44: note: 
      'abs' declared here
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT ...

現行のコード

#include <chrono>
#include <iostream>
#include <thread>
#include <vector>
#include <algorithm>
#include <iostream>

//繰り返し処理全体にかかった時間
using namespace std::chrono;

double median(std::vector<double>v) {
    double size = v.size();
    std::vector<double> _v(v.size());
    copy(v.begin(), v.end(), back_inserter(_v));
    double tmp;
    for (int i = 0; i < size - 1; i++){
        for (int j = i + 1; j < size; j++) {
            if (_v[i] > _v[j]){
                tmp = _v[i];
                _v[i] = _v[j];
                _v[j] = tmp;
            }
        }
    }
    if (size % 2 == 1) {
        return _v[(size - 1) / 2];
    } else {
        return (_v[(size / 2) - 1] + _v[size / 2]) / 2;
    }
}

int main()
{
    #define N 2

    double A[N][N] = {
        {3.0, 5.0},
        {9.0, 5.0}
    };

    double B[N][N] = {
        {3.0, 6.0},
        {8.0, 9.0}
    };

    double C[N][N] = {
        {0.0, 0.0},
        {0.0, 0.0}
    };
    int i, j, k, n;



    //各足し算にかかった時間を入れる配列
    std::vector<double> timedata;

    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
                //測定開始
                std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
                C[i][j] += A[i][j]+B[i][j];
                //測定終了
                high_resolution_clock::time_point end = high_resolution_clock::now();
                double time =  std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count();

                //配列にappend
                timedata.push_back(time);
            }
    }

    //ソート前
    for (auto value : timedata) {std::cout << value << ", ";
        std::cout << std::endl;
    }

    //配列をソート
    std::cout << "After Sorted"<< std::endl;
    std::sort(timedata.begin(), timedata.end());
    for (auto value : timedata) {std::cout << value << ", ";
        std::cout << std::endl;
    }

    ans = median(timedata);
    std::cout << ans << std::endl;

}