Как проще написать интерфейс для математических вычислений?
Может целесообразнее описывать функции f и g на том же C++ в отдельном файле и пересобирать исполняемый файл каждый раз под конкретную задачу, например с помощью скрипта
#/bin/bash
gcc -o $1 -lm -lstdc++ solver.o $1.cpp
./$1
где $1 -- аргумент скрипта -- имя файла с реализацией конкретных f и g без расширения
solver.o -- предварительно скомпилированное вычислительное ядро
Запускать каждый раз отдельный процесс для вычисления одного числа - это будет стоить как крымский мост. 
Самые быстрые способы по убыванию: программа для GPU, вычисление вектора значений от матрицы входных параметров, библиотека с реализацией нужной функции.
Что касается удобства - очевидно это зависит от постановки задачи, потому что универсальный вычислитель - это компилятор. Можно еще посмотреть на компиляцию кода во время работы (JIT), реализации есть для разных языков.