Это ДЕЙСТВИТЕЛЬНО зависит от того, что вам нужно, чтобы выполнить скрипт bash!
Например, если скрипт bash просто перекликается с некоторым выходом, вы можете просто сделать
docker run --rm -v $(pwd)/mybashscript.sh:/mybashscript.sh ubuntu bash /mybashscript.sh
Another Возможно, вы хотите, чтобы скрипт bash устанавливал какое-то программное обеспечение - скажем, скрипт для установки docker-compose. вы можете сделать что-то вроде
docker run --rm -v /usr/bin:/usr/bin --privileged -v $(pwd)/mybashscript.sh:/mybashscript.sh ubuntu bash /mybashscript.sh
. Но на этом этапе вам действительно нужно знать, что делает скрипт, чтобы разрешить конкретные разрешения, необходимые для вашего хоста изнутри контейнера.
Чтобы решить мою проблему, я нашел ряд разложений , и их я реализовал для решения уравнения X ^ n = e ^ (n * ln x).
// Adjust this to modify the precision
public const int ITERATIONS = 27;
// power series
public static decimal DecimalExp(decimal power)
{
int iteration = ITERATIONS;
decimal result = 1;
while (iteration > 0)
{
fatorial = Factorial(iteration);
result += Pow(power, iteration) / fatorial;
iteration--;
}
return result;
}
// natural logarithm series
public static decimal LogN(decimal number)
{
decimal aux = (number - 1);
decimal result = 0;
int iteration = ITERATIONS;
while (iteration > 0)
{
result += Pow(aux, iteration) / iteration;
iteration--;
}
return result;
}
// example
void main(string[] args)
{
decimal baseValue = 1.75M;
decimal expValue = 1/252M;
decimal result = DecimalExp(expValue * LogN(baseValue));
}
Функции Pow () и Factorial () просты, потому что степень всегда int (внутри ряда степеней).
Это должно быть самым быстрым для положительного целого показателя и десятичной основы:
// From http://www.daimi.au.dk/~ivan/FastExpproject.pdf
// Left to Right Binary Exponentiation
public static decimal Pow(decimal x, uint y){
decimal A = 1m;
BitArray e = new BitArray(BitConverter.GetBytes(y));
int t = e.Count;
for (int i = t-1; i >= 0; --i) {
A *= A;
if (e[i] == true) {
A *= x;
}
}
return A;
}
Я думаю, что это во многом зависит от числа, которое Вы планируете на включении. Если и 'b' не будет 'хорошее' число тогда, то Вы, вероятно, получите значение, которое не завершается, который невозможно сохранить и если C# BigDecimal ведет себя вообще как Java BigDecimal, это, вероятно, выдает исключение в таком случае.
Вы уверены, что действительно хотите это сделать? Умножение decimal
примерно в 40 раз медленнее, чем double
, поэтому я ожидаю, что десятичное число Math.Pow()
будет практически неприменимо.
Однако, если вы ожидаете только целочисленные полномочия, я предлагаю вам использовать алгоритм вычислений на основе целочисленных значений, который уже обсуждался здесь в SO.