# Laplace transform of a polynomial

Your goal is to write a program that will print out the Laplace transform of a polynomial function with integer coefficients f(x). The Laplace transform of f(x) is defined as the integral from 0 to infinity of f(x) e^(-sx) dx.

The standard input for the polynomial function will be

a+bx+cx^2+dx^3+...


If the coefficient is zero, that term is omitted. It can be taken in from any standard type of input.

This is valid input: 1+x^2-5x^4+20x^5
These aren't:
0
1+0x
1+x^1
x^0+x


You may output from any standard type of output, in any readable order. Trailing newline is permitted. No using built in evaluation functions.

Examples:

Input: 1
Output: 1/s

Input: 3-x
Output: 3/s-1/s^2


This is code golf, so the shortest entry in bytes wins.

• Will the polynomial always have integer coefficients? – Alex A. Aug 11 '15 at 2:36
• @AlexA. Yes. Edited into the question. – Teoc Aug 11 '15 at 2:36
• The Laplace transform of 1 is 1/s, not -1/s. – Dennis Aug 11 '15 at 2:43
• Also, does the output have to follow the same conventions as the input, i.e., 0/s and 1/s^1 are not allowed? – Dennis Aug 11 '15 at 2:48
• @Dennis It can be any form. – Teoc Aug 11 '15 at 2:49

# CJam, 57 bytes

l_"+-":Pf&sN+\PSerS/.{'^-'x/2We]"11".e|:~~:Em!*"/s^"E)+@}


Try it online in the CJam interpreter.

# Perl, 129 bytes

Regex-based solution:

sub f{@_[0]<2?1:@_[0]*f(@_[0]-1)}$_=<>;s/(\d*)x\^?(\d*)/f($2?$2:1)*($1?$1:1).'^'.($2?$2+1:2)/eg;s/(?<!\^)(\d+)/$1.'\/s'/eg;print


Multiline:

sub f{@_[0]<2?1:@_[0]*f(@_[0]-1)} # define factorial subroutine
$_=<>; # read input # do the laplace transform for all non-constant terms, without dividing by s: s/(\d*)x\^?(\d*)/f($2?$2:1)*($1?$1:1).'^'.($2?$2+1:2)/eg; s/(?<!\^)(\d+)/$1.'\/s'/eg; # divide non-exponents by s
print