Poly2tex.java
/*
* $Id: Poly2tex.java,v 1.4 2008/02/25 08:35:51 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.matrix;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import org.mklab.nfc.scalar.DoublePolynomial;
/**
* 多項式をTeX形式でファイルに保存するクラスです。
*
* <p> Save a polynomial to a file in tex-form
*
* @author koga
* @version $Revision: 1.4 $
* @see org.mklab.tool.matrix.Mat2tex
* @see org.mklab.tool.matrix.Rat2tex
*/
public class Poly2tex {
/**
* @param p 多項式
* @param file ファイル名
* @throws IOException 出力できない場合
*/
public static void poly2tex(DoublePolynomial p, String file) throws IOException {
try (PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)))) {
pw.print(poly2texf(p));
}
}
/**
* @param p 多項式
* @param file ファイル名
* @param var_name 変数名
* @throws IOException 出力できない場合
*/
public static void poly2tex(DoublePolynomial p, String file, String var_name) throws IOException {
try (PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)))) {
pw.print(poly2texf(p, var_name));
}
}
/**
* @param p 多項式
* @return TeX形式の文字列
*/
public static String poly2texf(DoublePolynomial p) {
String var_name = "s"; //$NON-NLS-1$
return poly2texf(p, var_name);
}
/**
* @param p 多項式
* @param var_name 変数名
* @return TeX形式の文字列
*/
public static String poly2texf(DoublePolynomial p, String var_name) {
String tex = p.toString();
if (!var_name.equals("s")) { //$NON-NLS-1$
int i;
while ((i = tex.indexOf('s')) > 0) {
if (tex.length() == 1) {
tex = var_name;
} else if (i == tex.length()) {
tex = tex.substring(1, i - 1) + var_name;
} else if (i == 1) {
tex = var_name + tex.substring(i + 1, tex.length());
} else {
tex = tex.substring(1, i - 1) + var_name + tex.subSequence(i + 1, tex.length());
}
}
}
return tex;
}
}